Я внедрил систему уведомлений в моем проекте Django, где пользователь получает уведомление, когда кто-то комментирует его пост / блог или ему нравится. Я в основном делаю запись в базе данных и каждый раз получаю непрочитанные уведомления для пользователя.
Моя таблица для уведомления
class notifications(models.Model):
time = models.DateTimeField(blank=True)
message = models.TextField()
object_type = models.CharField(max_length=255)
object_url = models.CharField(max_length=500)
n_reciever = models.IntegerField()
n_sender = models.ForeignKey(User,null=True)
is_read = models.BooleanField(default=False)
def save(self, *args, **kwargs):
if not self.id:
self.time = datetime.datetime.now()
super(notifications, self).save(*args, **kwargs)
Каждый раз, когда объект комментируется, нравится или устанавливается как любимый, я могу генерировать сигнал, который будет обработан обработчиком сигнала, ответственным за создание записи в этой таблице.
Я использую пользовательское промежуточное ПО для проверки наличия новых уведомлений при каждом обновлении страницы, запрашивая у таблицы объекты, для поля is_read
которых установлено значение false. Я сделал таблицу общей, чтобы она могла содержать уведомления для любого типа деятельности.
Таким образом, ситуация сводится к тому, что у меня есть несколько сигналов, и для каждого сигнала у меня есть один и тот же обработчик сигналов, который сделает необходимую запись в базе данных. Как я могу это сделать?
Могу ли я сделать что-то подобное
blog_liked.connect(notification_handler)
blog_set_favorite.connect(notification_handler)
.
.
.
т.е. связывая один и тот же обработчик с несколькими сигналами, я гарантирую, что все сигналы отправляют одни и те же данные.
Буду также признателен за любые отзывы о технике, которую я использую для создания уведомлений для пользователей.