I have two class model image and videoembed. the question is how to put two class in single listview… when there’s no image, video embed show up it’s my code.
in 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 %}
thanks for any help