Как я могу показать последние 4 сообщения в django?

#python #django #django-views #django-class-based-views

Вопрос:

Я пытаюсь показать последние 4 сообщения с Django, используя представления на основе классов, но на странице не отображаются данные (сообщение). это код: views.py :

 class PostList(ListView):
    model=Post
    paginate_by=10
    context_object_name='all_posts'
    ordering=['-created_at']
    latest=model.objects.order_by('-created_at')[:4]
 

templates/post_list.html :

 {% for post in latest  %}
                <div class="col-sm-12 col-md-6 col-lg-3" >
                    <!-- cards-->
                    <div class="card ">
                        
                        <img src="{{post.image.url}}" class="card-img-top" alt="...">
                        <div class="card-body">
                        <h5 class="card-title">{{post.title}}</h5>
                        <p class="card-text">{{post.content}}</p>
                        <a href="#" class="btn btn-primary">Go somewhere</a>
                        </div>
                    </div>

                    <!-- ends cards-->
                </div>
                {% endfor %} 
 

моя благодарность

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

1. В чем заключается содержание latest=model.objects.order_by('-created_at')[:4] ?

Ответ №1:

Используйте get_aueryset() для этого!

Вот документация по Django

 class PostList(ListView):
    template_name = "templates/post_list.html"
    model = Post
    ordering = ["-created_at"]
    context_object_name = "all_posts"

    def get_queryset(self):
        queryset = super().get_queryset()
        data = queryset[:4]
        return data