Как не вызывать сигнал `m2m_changed` при обновлении отношений многие-ко-многим в Django?
Пример использования
В моем случае у меня есть два сигнала, которые прослушиваются на двух 2 m2m полях, каждое из этих полей находится в разных моделях. Проблема заключается в том, что когда срабатывает один сигнал, он запускает другой сигнал и наоборот, что приводит к рекурсивной петле, которая никогда не закончится. Мне нужен удобный способ запуска одного сигнала без срабатывания второго.
Понимать больше
Если вам интересно узнать, как это может произойти: У меня есть две модели, которые мне нужно сделать взаимно синхронизированными; если я обновил m2m поле в одной модели, мне нужно, чтобы эти изменения были отражены на другом m2m поле в другой модели и наоборот.
Решением является использование set
вместо: add
, remove
или clear
. Потому что все они вызывают сигнал m2m_changed
многократно.
Это не упоминается в документации, говорящей о set
или части, говорящей о m2m_changed