Как переопределить методы Django many to many field add () и remove ()
Я пытаюсь настроить систему уведомлений о действиях в стиле 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 для генерации любых полезных уведомлений о деятельности). Я обеспокоен тем, что доступ к экземпляру пользователя в сигнале (например, путем создания отдельного промежуточного программного обеспечения для хранения request.user в потоке) может быть дорогостоящим и небезопасным. Если это надежный вариант, скажите, пожалуйста.