Получаю ошибку, которую я не понимаю в своем шаблоне

#python #django #django-views #django-templates

Вопрос:

Когда я запускаю ‘python manage.py runserver» Я получаю ошибку, и я не могу понять, в чем проблема.

сообщение об ошибке: объект «Менеджер» не может быть повторен

Вот что это показывает:

 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:

.objects является a Manager , а не a 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 в Video , поскольку модели, как и любой класс, обычно называются в PerlCase, а не в snake_case.

Комментарии:

1. Большое спасибо!