Django自定义模板标签:' str'对象没有属性' notification_set'

时间:2014-06-20 07:59:52

标签: django django-templates

在定义作用于顶级base.html(而不是应用程序级别基础)的自定义模板标记时,我遇到的问题是在shell上执行得很好的查询。

例如,

from django.contrib.auth.models import User
u = User.objects.get(pk=3)
u.notification_set.filter(viewed=False).count() # returns 1 as expected

然而,在模板标签中,这给了我一个奇怪的错误

AttributeError at /mynotes/

'str' object has no attribute 'notification_set'

.是我的manage.py,这是自定义模板标记:

./应用程序/ templatetags / mytags.py

from django import template

register = template.Library()

@register.simple_tag(name="unread")
def get_unread(user):
    return user.notification_set.filter(viewed=False).count()

./模板/ base.html文件

{% load mytags %}
...
{% unread request.user%}

编辑:./ app / model.py

class Notification(models.Model):
    message = models.TextField()
    notification_for_user = models.ForeignKey(User)
    viewed = models.BooleanField(default=False)
    ... 

1 个答案:

答案 0 :(得分:0)

知道了。改变了

{% unread request.user %}

{% unread user%}

它有效。 +10,任何人都可以解释此错误。