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