Предположим, у альбома есть песни.Django, post_delete, можно ли использовать обратную связь?
Когда песни удалены, я хотел бы обновить количество песен для объектов альбома.
(Давайте предположим, что мы храним количество песен в поле Database)
Безопасно ли делать
@receiver(post_delete, sender=Song)
def set_song_count(sender, song, **kwargs):
song.album_set.update_song_count()
песня ForeignKey в альбом. Нет M2M.
Нам понадобится более подробная информация о связях между этими моделями. Есть ли, во всяком случае, участие ManyToMany? В этом случае в транзакции есть * неатомные аспекты *. Меня укусили на задницу не раз за м2м. –
@PeterRowell no M2m. – eugene
OK, тогда возникает вопрос: после удаления, является ли «песня» еще действительным объектом, чтобы сделать song.album_set.foo() включен? Рискованный. Объект, вероятно, все еще существует в памяти, но логический путь, который ORM использует для доступа к альбому, неясен. Я бы создал тестовую базу данных с этим простым случаем, а затем избил дерьмо из него и посмотрел, все ли работает так, как вы хотите. Удачи. Ps. Следите за временными окнами! –