как объединить изображение и встроенное видео в listview django

#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. Хотя этот код может решить проблему, хороший ответ должен также объяснить, что делает код и как он помогает.