我不知道为什么我会收到这个错误..
['用户'对象不可迭代]
这里我想在主页上打印(登录用户)粉丝。除了错误是我的models.py是对的?关注者和跟随机制。
模型
class Follow(models.Model):
following = models.ForeignKey('auth.User', related_name='following')
followers = models.ForeignKey('auth.User', related_name='followers')
视图
def profile(request):
current_user = request.user
twi = Follow.objects.get(pk=current_user.id)
display = twi.followers
return render(request,'home.html' ,
{'detail':display,'user':current_user,})
模板
{% for o in detail %}
<h1>o.followers</h1>
{% endfor %}
答案 0 :(得分:6)
您的逻辑中有混淆,followers
引用preventDefault
但字段本身是指向单个用户的链接,您需要将此字段设为ManyToMany关系,或使用反向查找以查找用户遵循的内容。
(Theres也是你上下文中的一个逗号,可能会在以后引起问题..
答案 1 :(得分:2)
获取返回单个查询集,如果使用get
,则无法迭代它在模板
中使用它 <h1>{{ detail.followers }}</h1>
或者如果您需要多个
在视图中
twi = Follow.objects.filter(pk=current_user.id)
并更改此行
display = twi.followers
到
display = twi
并在模板中
{% for o in detail %}
<h1>{{ o.followers }}</h1>
{% endfor %}
答案 2 :(得分:0)
如果您想迭代'详细信息'并且不想更改模板中的代码,请使用filter()查询并设置'display' to result of your filter query.
或者如果您不打算更改视图代码,可以从
编辑模板代码 {% for o in detail %}
<h1>o.followers</h1>
{% endfor %}
到
<h1>{{detail}}</h1>