Django' User'对象不可迭代

时间:2017-06-30 07:35:54

标签: python django

我不知道为什么我会收到这个错误..

  

['用户'对象不可迭代]

这里我想在主页上打印(登录用户)粉丝。除了错误是我的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 %}

3 个答案:

答案 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>