Форум сайта python.su
Всем привет
Мне нужно при удалении записи из таблицы, изменять значение в записи другой таблицы, у таблиц связь ManyToManyField
Хотел воспользоваться m2m_changed, когда action=“post_remove”, но такое событие, как выяснилось, m2m_changed не отлавливает при удалении записи. Поискал причины, где-то пишут, что это баг, где-то предполагают, что логика у post_remove иная.
Нашёл такое решение
Но пока не особо понял его. Наверняка кто-то сталкивался с этим. Как решали проблему?
Отредактировано Budulianin (Авг. 23, 2013 23:25:00)
Офлайн
А почему нельзя просто в post_delete объекта, изменять другой объект?
Например, объекты A <–m2m–> B.
Удаляется A, ловим post_delete, смотрим, с чем он соединён и изменяем B
Офлайн
lorien
А почему нельзя просто в post_delete объекта, изменять другой объект?Например, объекты A <–m2m–> B.Удаляется A, ловим post_delete, смотрим, с чем он соединён и изменяем B
def post_delete_category_count(sender, instance, **kwargs) print(instance.categories.all()) post_delete.connect(post_delete_category_count, Article)
[]
Отредактировано Budulianin (Авг. 24, 2013 13:52:10)
Офлайн
lorien
А если pre_delete?
Офлайн
Во время pre_delete вы можете в redis или может быть в какой-нить runt-time объект сохранять ID связанного объекта и уже затем в post_delete удалять его.
Офлайн
lorien
Во время pre_delete вы можете в redis или может быть в какой-нить runt-time объект сохранять ID связанного объекта и уже затем в post_delete удалять его.
Офлайн