Python 如何按特定规则进行排序django

Python 如何按特定规则进行排序django,python,mysql,django,python-3.x,Python,Mysql,Django,Python 3.x,我想按照以下规则在django中订购我的对象: 所有带有的字符都必须位于查询结果的末尾 我正在使用两个查询,以获取已售出字符和未售出字符: characters = list(Character.objects.all().filter(is_sold=False).order_by('server__ranking')) characters += list(Character.objects.filter(is_sold=True).order_by('server__ranking')

我想按照以下规则在django中订购我的对象:

  • 所有带有
    字符都必须位于查询结果的末尾
我正在使用两个查询,以获取已售出字符和未售出字符:

characters = list(Character.objects.all().filter(is_sold=False).order_by('server__ranking'))
characters += list(Character.objects.filter(is_sold=True).order_by('server__ranking'))

我是否可以使用
order\u by

仅使用一个查询来执行此操作?您可以将多个字段传递给
order\u by

characters = Character.objects.order_by('is_sold', 'server__ranking')
已售出的是否先于未售出的取决于您的数据库后端,因为有些数据库在
True
之前订购
False
,有些则相反(请参阅)!因此,您可能不得不这样做:

characters = Character.objects.order_by('-is_sold', 'server__ranking')

如果使用
order\u by
则无需
all()