Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Сохранение композитной модели одним save()-ом [RSS Feed]

#1 Авг. 24, 2011 11:09:43

ernando
От:
Зарегистрирован: 2011-08-24
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Сохранение композитной модели одним save()-ом

Сел за изучение данного фреймоврка и возник вопрос по сохранению моделей. Имеем следующий пример:

class A(models.Model):
id = models.AutoField(primary_key=True)
title = models.CharField(max_length=30)

class B(models.Model):
id = models.AutoField(primary_key=True)
title = models.CharField(max_length=30)
aItems = models.OneToOneField(A)
код сейва:
a = A(title="123")
b = B(title="333", aItems = a)
b.save()
в итоге вываливается (1048, “Column ‘aItems_id’ cannot be null”)
если сейваешь сначала айтем а - все ок.

Собсно вопрос - неужели необходимо сейвать все составляющие объекта в ручном режиме? И желательно, где про енто можно почитать.



Офлайн

#2 Авг. 24, 2011 12:26:11

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2267
Репутация: +  41  -
Профиль   Отправить e-mail  

Сохранение композитной модели одним save()-ом

ну если ты не созранишь А, то не будет id поля в базе, выведи a.id до сейва и после…

Офлайн

#3 Авг. 24, 2011 12:32:58

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2267
Репутация: +  41  -
Профиль   Отправить e-mail  

Сохранение композитной модели одним save()-ом

да и пихать id в модель необязательно, это поле есть во всех моделях по дефолту

Офлайн

#4 Авг. 24, 2011 16:22:09

ernando
От:
Зарегистрирован: 2011-08-24
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Сохранение композитной модели одним save()-ом

> ну если ты не созранишь А, то не будет id поля в базе, выведи a.id до сейва и после…

я понимаю что будут отличаться (конкретный id vs None); но почему django не может сам сейвануть сначала A, а потом заюзать его id для сейва B? просто сохранять всю структуру в таком ручном режиме - как-то совсем не радует.

ps: знаю, что дефолтовое поле; но как-то привык для ясности прописывать руками



Офлайн

#5 Авг. 24, 2011 18:28:24

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2267
Репутация: +  41  -
Профиль   Отправить e-mail  

Сохранение композитной модели одним save()-ом

потому что это было б неочевидно и глупо

Офлайн

  • Начало
  • » Django
  • » Сохранение композитной модели одним save()-ом[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version