Django,警告为VIEW返回queryset无序


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 

型号.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 

最新更新