在定义作用于顶级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)
...
答案 0 :(得分:0)
知道了。改变了
{% unread request.user %}
到
{% unread user%}
它有效。 +10,任何人都可以解释此错误。