Сигнал Django после целой модели был сохранен

У меня есть модель Django с 2 полями ManyToMany . Я хочу обрабатывать данные из модели каждый раз, когда она была сохранена.

Сигнал post_save отправляется до того, как он сохранит отношения ManyToMany , поэтому я не могу использовать этот. Тогда у вас есть сигнал m2m_changed , но поскольку у меня есть 2 поля ManyToMany я не могу быть уверен, на ManyToMany поле ManyToMany я должен поместить сигнал.

Нет ли сигнала, который запускается после того, как все поля ManyToMany сохранены?

Я чувствую, что единственным вариантом является обработка данных после каждого m2m_change , так как не представляется событием или сигналом, который отображает «все связанные данные по этой модели закончили экономить».

Если это высокая стоимость, вы можете обрабатывать обработку асинхронно. Когда я столкнулся с подобной ситуацией, я добавил логическое поле модели для обработки состояния, связанного с обработкой (например, MyModel.needs_processing ) и отдельной асинхронной очереди задач (Celery, в моем случае) будет проходить каждую минуту и ​​обрабатывать сброс обработки / состояния.

В вашем случае, если m2m_changed и needs_processing являются False , вы можете установить needs_processing в True и сохранить модель, маркируя ее для обработки по вашей очереди задач. Затем, даже когда второй m2m_changed для другого поля m2m, он не будет нести дублирующие затраты на обработку.