我想通过这条规则在django中订购我的对象:
characters
is_sold == True
必须在查询结果的末尾。我使用两个查询,以获得已售出和未售出的字符:
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_by
答案 0 :(得分:3)
您可以将多个字段传递给order_by
:
characters = Character.objects.order_by('is_sold', 'server__ranking')
销售是否在未售出之前取决于您的数据库后端,因为有些数据库在False
之前订购True
而另一些则相反(请参阅this ticket)!所以你可能不得不这样做:
characters = Character.objects.order_by('-is_sold', 'server__ranking')