Как отразить изменения в обоих экземплярах «один ко многим» при одновременном обновлении одного из них в Django? - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть две таблицы, связанные с Foreignkey . У меня есть поле в основной модели, его значение зависит от дочерних экземпляров.

Например, если у меня есть модель Библиотеки и модель Книги, в Книге есть Foriegnkey to Library. И у нас есть поле в модели Библиотеки, которое равно «total_price» всех книг в библиотеке. Как я могу обновить это поле «total_price» всякий раз, когда я увеличиваю количество определенной книги или уменьшаю его.

Обратите внимание, что мне нужно сохранить каждый экземпляр отдельно, чтобы получить правильное значение . У меня есть Книги как TabularInline внутри библиотеки, поэтому я изменяю количество и сохраняю изменения, а затем мне нужно еще раз нажать кнопку «Сохранить», чтобы изменить поле «total_price».

1 Ответ

0 голосов
/ 22 апреля 2020

Чтобы устранить эту проблему, я вызвал метод сохранения для основной модели после сохранения дочерней модели.

class Book(models.Model):
    library = models.Foreignkey(Library, on_delete = models.CASCADE)
    ....
    def save(self, *args, **kwargs):
    self.price = BookPrice(self)
    super(Item, self).save(*args, **kwargs)
    self.library.save() 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...