#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. Большое спасибо!