Добавление объекта в базу данных без вызова функции сохранения
Я хотел бы узнать, возможно ли добавить объект в базу данных без вызова save().
foo = Foo.objects.create(
#fields
)
lst_bars = []
for bar in MyModel.objects.filter(
#fields
):
lst_bars.append(Bar(
foo_id=foo.id,
# fields
))
Bar.objects.bulk_create(lst_bars)
foo.save()
В этом коде я создаю Foo, затем использую его id в качестве ссылки при создании Bar. После массового создания всех объектов Bar я вызываю функцию foo save.
В foo save() я вызываю каждый бар save(), затем агрегирую данные всех баров и заполняю поля Foo.
В общей сложности метод save вызывается два раза, но в create() я хотел бы просто создать без сохранения, чтобы не производить вычисления, когда нет данных.
Я нашел способ вызывать сохранение и не производить вычисления:
def save(self, *args, **kwargs):
self.full_clean()
just_created = True if not self.id else False
if not just_created:
# make calculations
super().save(*args, **kwargs)
Буду благодарен, если кто-нибудь знает, возможно ли добавить объект в базу данных без вызова save другим способом (без необходимости изменения метода save).