Как с помощью сигналов отслеживать изменения Many-to-Many отношений

Python Middle Без компании
Как с помощью сигналов отслеживать изменения Many-to-Many отношений
Ответы
Для отслеживания изменений в ManyToMany отношениях в Django можно использовать сигналы `m2m_changed`. Этот сигнал срабатывает при любых изменениях в промежуточной таблице (добавление, удаление, очистка связей). Пример использования: ``` from django.db.models.signals import m2m_changed from django.dispatch import receiver from myapp.models import MyModel @receiver(m2m_changed, sender=MyModel.related_field.through) def m2m_changed_handler(sender, instance, action, reverse, model, pk_set, **kwargs): if action == "post_add": print(f"Добавлены связи с объектами {pk_set}") elif action == "post_remove": print(f"Удалены связи с объектами {pk_set}") elif action == "post_clear": print("Все связи очищены") ``` Основные параметры: - `action` - тип изменения ('pre_add', 'post_add', 'pre_remove', 'post_remove', 'pre_clear', 'post_clear') - `instance` - экземпляр модели, чьи связи изменяются - `pk_set` - набор первичных ключей связанных объектов - `reverse` - указывает направление связи (True если изменялись связи на обратной стороне)