django自定义查询集过滤,首先针对特定事物,然后是其他所有内容

时间:2015-11-14 16:58:01

标签: django sorting django-queryset

我想知道是否可以执行自定义查询集过滤器

类似

史蒂夫,苹果

玛丽,苹果

丹,苹果

史蒂夫,橘子

迈克,橘子

玛丽,橘子

迈克,梨子

所以主要的顺序是水果名称 但如果有一些人用相同的水果,特定的用户(在这种情况下是史蒂夫)将始终是第一。

并且也很明显,所以只有每一束水果中的第一个出现。

史蒂夫,苹果

史蒂夫,橘子

迈克,梨子

我尝试过自定义管理器,它似乎覆盖了我正常的Model.objects.functions

我尝试了一个原始的sql和extra,但是它返回了列表而不是查询集(我相信),那些没有查询集的东西 方法,在以后的代码中调用。

1 个答案:

答案 0 :(得分:0)

您无法指定哪个用户可以在第一条记录上,因为数据库只能按特定条件对整个记录进行排序。你最多可以这样做:

Model.objects.all().order_by('fruit', 'name')

这可以为您提供一个查询集,该查询集首先按水果排序,然后按名称排序在每个水果排序中,但在一个查询集中,您永远不能将某人的名称放在顶部。