Найти - Пользователи
Полная версия: Сохранение композитной модели одним save()-ом
Начало » Django » Сохранение композитной модели одним save()-ом
1
ernando
Сел за изучение данного фреймоврка и возник вопрос по сохранению моделей. Имеем следующий пример:
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”)
если сейваешь сначала айтем а - все ок.

Собсно вопрос - неужели необходимо сейвать все составляющие объекта в ручном режиме? И желательно, где про енто можно почитать.
slav0nic
ну если ты не созранишь А, то не будет id поля в базе, выведи a.id до сейва и после…
slav0nic
да и пихать id в модель необязательно, это поле есть во всех моделях по дефолту
ernando
> ну если ты не созранишь А, то не будет id поля в базе, выведи a.id до сейва и после…

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

ps: знаю, что дефолтовое поле; но как-то привык для ясности прописывать руками
slav0nic
потому что это было б неочевидно и глупо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB