在我的模板中出现我不明白的错误

时间:2021-03-31 16:05:53

标签: python django django-views django-templates

当我运行 '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>

错误是什么,我需要修复什么?

1 个答案:

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