Django, warning as VIEW return queryset unordered

Шаблоны представления Django принимают параметры из URL, фильтруют базу данных и выводят список. Несмотря на то, что я добавил упорядочивание, я получаю неупорядоченные результаты

class PostListView(ListView):
    model = Post
    
    template_name = 'mainapp/post-list.html'  
    
    ordering = ['-created_at']
    paginate_by = 5

    def get_queryset(self, *args, **kwargs):
        district = self.kwargs.get('district')
        catagory = self.kwargs.get('catagory')
        if district !=False:
            posts = Post.objects.filter(Q(catagory=catagory)& Q(district=district))
        else:
            posts = Post.objects.filter(catagory=catagory)                              
        return posts 

models.py

class Post(models.Model):
    district=models.CharField(max_length=20)
    catagory=models.CharField(max_length=20)
    created_at=models.DateTimeField(default=timezone.now)

Поскольку вы переопределяете метод get_queryset и не упорядочиваете набор запросов, Django выдает предупреждение.

Вы можете решить это по ссылке, прокомментированной @Eric Martin или следуйте следующему решению

def get_queryset(self, *args, **kwargs):
    queryset = super(PostListView, self).get_queryset()
    district = self.kwargs.get('district')
    catagory = self.kwargs.get('catagory')
    if district !=False:
        posts = queryset.filter(Q(catagory=catagory)& Q(district=district))
    else:
        posts = queryset.filter(catagory=catagory)                              
    return posts 
Вернуться на верх