#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 в потоке) может быть дорогостоящим и небезопасным. Если это надежный вариант, пожалуйста, скажите мне.