Как переопределить методы добавления полей Django многие ко многим () и удаления ()

#django #django-rest-framework #django-signals #manytomanyfield #django-activity-stream

#django #django-rest-framework #django-сигналы #manytomanyfield #django-activity-stream

Вопрос:

Я пытаюсь настроить Facebook-подобную систему уведомлений об активности, используя Django-Activity-Stream.

Библиотека предоставляет специальный action сигнал для создания действий. Согласно документации, для запуска этого action ,

Вы можете сделать это с помощью пользовательских форм или переопределив предопределенные методы модели, такие как Model.save() . Логика заключается в том, чтобы просто импортировать сигнал действия и отправить его с вашим действующим лицом, глаголом, целью и любыми другими важными аргументами. Например, action.send(request.user, verb='reached level 10')

Однако у меня есть промежуточная сквозная модель, из которой должен быть отправлен action сигнал. Поскольку Model.save() метод не вызывается, когда вместо этого используются методы M2M add() или remove() , я хочу знать, есть ли какой-либо способ переопределить эти add() и remove() методы.

Я думал об использовании измененных сигналов M2M, но вскоре понял, что не смогу легко получить доступ к request.user в измененных сигналах M2M. (Мне нужно всегда знать, кто request.user должен генерировать любые полезные уведомления о действиях). Я обеспокоен тем, что доступ к экземпляру пользователя в signal (например, путем создания отдельного промежуточного программного обеспечения для хранения request.user в потоке) может быть дорогостоящим и небезопасным. Если это надежный вариант, пожалуйста, скажите мне.