Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django中QuerySet中子集或结果的随机顺序_Django_Django Queryset - Fatal编程技术网

Django中QuerySet中子集或结果的随机顺序

Django中QuerySet中子集或结果的随机顺序,django,django-queryset,Django,Django Queryset,我有一个这样的问题: Listing.objects.all().order_by('-premium',title') 它像预期的那样工作,首先返回所有高级类,然后返回按标题排序的所有内容 现在,我只需要随机化premium结果的顺序。这可能吗?您可以再次使用order\u by对标题进行排序,而无需高级 qs=Listing.objects.filter().order_by('-premium', 'title') qs2 = qs.order_by('title') # will be

我有一个这样的问题:

Listing.objects.all().order_by('-premium',title')

它像预期的那样工作,首先返回所有高级类,然后返回按标题排序的所有内容


现在,我只需要随机化
premium
结果的顺序。这可能吗?

您可以再次使用
order\u by
标题
进行排序,而无需
高级

qs=Listing.objects.filter().order_by('-premium', 'title')
qs2 = qs.order_by('title') # will be sorted on 'title' not 'premium'
或捷径

Listing.objects.filter().order_by('-premium', 'title').order_by('title')

注意:我使用的是
filter()
而不是
all()
作为初始设置。

好的,我认为在单个查询中没有解决方案。
所以我通过两个查询解决了这个问题:

premium_results = Listing.objects.filter(premium=True).order_by('?')
normal_results = Listing.objects.filter(premium=False).order_by('title')

results = list(premium_results) + list(normal_results)

注意:我需要一个列表作为输出,否则您可以使用Django的
Q
对象组合查询结果。

这样您就可以在第二个
order\u by
中按标题排序。我只需要随机化高级结果,而不是其他结果。