我有这个型号:
class ScoringModel(model.Model):
red_score = models.SmallIntegerField()
blue_score = models.SmallIntegerField()
我试图根据两者之间的较大者对查询集进行排序。现在,取它们的总和是行不通的,因为这意味着得分为90到0的得分低于50到50的得分,这不是我想要的。 (基本上,我试图找到一个高分列表。)
我尝试在模型中添加一个函数,如下:
class ScoringModel(model.Model):
red_score = models.SmallIntegerField()
blue_score = models.SmallIntegerField()
def max_score(self):
return self.red_score if self.red_score > self.blue_score else self.blue_score
哪个不起作用,因为order_by
函数不支持函数返回值(即ScoringModel.objects.order_by('-max_score')
和ScoringModel.objects.order_by('-max_score()')
无法运行。
非常感谢任何帮助
答案 0 :(得分:1)
我建议你看看这个答案
https://stackoverflow.com/a/1875616/5518973
您可以使用mysql函数GREATEST(field1,field2)代替Sum,然后按该额外字段排序。