2013-06-28 5 views
1

Я работаю над проектом, в котором я реализовал систему обмена сообщениями, такую ​​как facebook, где пользователи могут отправлять сообщения друг другу. Количество непрочитанных сообщений определенного потока также отображается на странице сообщений.Django, количество просмотров непрочитанных сообщений в базовом шаблоне

Теперь я хочу, чтобы отображал количество непрочитанных сообщений на панели навигации (что есть в base.html) при каждом входе пользователя в систему. Как это сделать, когда пользователь входит в систему?

Просьба предложить, и я не хочу использовать какое-либо другое приложение для этой цели. Спасибо

+0

вы используете модель профиля пользователя? – karthikr

+0

@karthikr: на самом деле нет –

+1

Я сделал что-то подобное в прошлом с видом, который я вызываю через ajax. Вы могли бы даже выполнить js-часть каждые n секунд, чтобы она обновлялась при получении нового сообщения. –

ответ

3

Вы можете написать simple tag, который может сделать это за вас.

def unread_messages(user): 
    return user.messages_set.filter(read=False).count() 
    #replace the messages_set with the appropriate related_name, and also the filter field. (I am assuming it to be "read") 

register.simple_tag(unread_messages) 

и в базовом шаблоне:

{% load <yourtemplatetagname> %} 

{% if request.user.is_authenticated %} 
    {{ request.user|unread_messages }} 
{% endif %} 
+0

, показывая мне следующую ошибку : TemplateSyntaxError Неверный фильтр: 'unread_messages' –

+0

Возможно, вы забыли '{% load%}' тег шаблона – karthikr

+0

да, я этого не видел, этот подход поможет мне, спасибо человеку –