Итак, я пытаюсь настроить счетчик непрочитанных сообщений с помощью простого тега и добавить его в свой шаблон. Теперь я столкнулся с проблемой, когда сообщение, отправленное другому пользователю, отображается как «непрочитанное» от моего пользователя, даже если оно отправляется другому пользователю. Очевидно, я хочу, чтобы сообщения, отправленные только МОЕМУ пользователю, отображались как непрочитанные. Я не уверен, нужно ли мне добавить в мою модель InstantMessage
еще одно поле, например, «приемник», или я могу проверить пользователя по request.user в моем unread_messages_counter.py
.
unread_messages_counter.py
register = template.Library()
@register.simple_tag
def unread_messages(user):
return user.sender.filter(viewed=False).count()
models.py / InsantMessage and Conversation
class Conversation(models.Model):
members = models.ManyToManyField(settings.AUTH_USER_MODEL)
class InstantMessage(models.Model):
sender = models.ForeignKey(settings.AUTH_USER_MODEL, related_name= 'sender',on_delete=models.CASCADE )
conversation = models.ForeignKey(Conversation, on_delete=models.CASCADE)
message = models.TextField()
date = models.DateTimeField(verbose_name="Data creation",default=timezone.now(), null=False)
viewed = models.BooleanField(default=False, db_index=True)
def __unicode__(self):
return self.message