当我运行 'python manage.py runserver' 时出现错误,我无法弄清楚 ptoblem 是什么。
错误信息: 'Manager' 对象不可迭代
这是它显示的内容:
51 <div class="row">
52 <div class="ads">
53 {% for ad in ad_item %}
54 {% ifequal ad.redirect 'False' %}
55 <img src="{{ ad.pic }}"></img>
56 {% endifequal %}
57 {% ifnotequal ad.redirect 'False' %}
58 <a href="{{ ad.redirect }}"><img src="{{ ad.pic }}"></img></a>
59 {% endifnotequal %}
60 {% endfor %}
61 </div>
62 </div>
这是我的观点:
from django.shortcuts import render, get_object_or_404
from django.views.generic.list import ListView
from videos.models import video, ad
from django.template import RequestContext
def show_vid (request, pk, pkv):
video_ = get_object_or_404(video, pk=pk)
ad_item = ad.objects
return render (request, 'video.html', {'video_': video_, 'ad_item': ad_item})
这是我的模板:
<div class="row">
<div class="ads">
{% for ad in ad_item %}
{% ifequal ad.redirect 'False' %}
<img src="{{ ad.pic }}"></img>
{% endifequal %}
{% ifnotequal ad.redirect 'False' %}
<a href="{{ ad.redirect }}"><img src="{{ ad.pic }}"></img></a>
{% endifnotequal %}
{% endfor %}
</div>
</div>
错误是什么,我需要修复什么?
答案 0 :(得分:1)
1
是一个 .objects
,而不是一个 Manager
,并且这些是不可迭代的。你应该和QuerySet
一起工作:
.all()
您可能还想将 def show_vid (request, pk, pkv):
video_ = get_object_or_404(video, pk=pk)
ad_item = ad.objects.all()
return render (request, 'video.html', {'video_': video_, 'ad_item': ad_item})
重命名为 ad
并将 Ad
重命名为 video
,因为模型与任何类一样,通常以 PerlCase 命名,不是snake_case。