#python-3.x #django #django-views #django-templates
#python-3.x #django #django-просмотры #django-шаблоны
Вопрос:
У меня есть две модели классов image и videoembed. вопрос в том, как поместить два класса в один listview.. когда изображения нет, отображается встроенное видео, это мой код.
views.py
def news_list(request):
"""news list category"""
category = Category.objects.get(id=1)
a_list = Article.objects.filter(category=1)
g_list = Gallery.objects.filter(category=1)
v_list = Videoembed.objects.filter(category=1)
object_list = sorted(
chain(a_list, g_list, v_list), key=attrgetter("publish"), reverse=True
)
paginator = Paginator(object_list, 4) # 3 posts in each page
page = request.GET.get("page")
try:
posts = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer deliver the first page
posts = paginator.page(1)
except EmptyPage:
# If page is out of range deliver last page of results
posts = paginator.page(paginator.num_pages)
return render(
request,
"blog/post/news.html",
{"category": category, "page": page, "posts": posts},
)
и в news.html
<div class="row">
{% for post in posts %}
<div class="col-lg-4 col-md-6 col-sm-12 pb-4">
{% if forloop.counter0|divisibleby:3 and not forloop.first %}<div class="w-100"></div>{% endif %}
{% video post.video %}
<img src="{{ post.images.url }}" width="300px">
<P>
<h2><a href="{{ post.get_absolute_url }}">
{{ post.title }}
</a> </h2> </p>
<p class="date">
Published {{ post.publish }} by {{ post.author }}
</p>
{{ post.body|safe|truncatewords:30|linebreaks }}
</div>
{% endfor %}
спасибо за любую помощь
Ответ №1:
{% if post.video %}
{% video post.video %}
{% else %}
<img src="{{ post.images.url }}" width="300px">
{% endif %}
Комментарии:
1. Хотя этот код может решить проблему, хороший ответ должен также объяснить, что делает код и как он помогает.