0

Im trying to make dialog app. I can check if the user has unread messages from all senders, but i cant filter unread query for each sender

#model
from .middleware import get_current_user #local copy of user

class ChatManager(models.Manager):
    def unread(self):
        qs = super(ChatManager, self).get_queryset()
        return qs.filter(is_viewed=False, receiver=get_current_user())
    #here need unread_by_sender method with filtering by sender


class Chat(models.Model):
    ....
    sender = models.ForeignKey('accounts.User', verbose_name=u"Sender", related_name="sender")
    receiver = models.ForeignKey('accounts.User', verbose_name=u"Receiver", related_name="receiver")
    is_viewed = models.BooleanField(u"Viewed?", default=False)

    objects = ChatManager()

i wanna transfer user from template for filter in manager (sender), but i dont know how

#template

{% for user in user_list %}
    {{user.sender.unread.count}}
{% endfor %}

can u help me with unread_by_sender (personal filtering) method in custom manager? Thank you.

user2314737
  • 27,088
  • 20
  • 102
  • 114
  • Is there an error message displayed? What's the value of ```get_current_user```? Is it changing every time you are iterating in your ```for```-loop? Otherwise you might get unexpected results. – blacklwhite Feb 14 '16 at 10:14
  • `get_current_user` from custom middleware, local copy of current user.. working fine, but this is only for `receiver`.. i wanna get `sender` value from template in loop. – Ameno Petrolo Feb 14 '16 at 10:29
  • Seems like your ```ChatManager``` is not used for the reverse lookup. Django provides ```use_for_related_fields = True``` for this problem; adding it to the ```ChatManager``` should solve it. It's documented here: https://docs.djangoproject.com/en/dev/topics/db/managers/#using-managers-for-related-object-access – blacklwhite Feb 14 '16 at 13:50

0 Answers0