Django,找到2个字段之和的最大值

时间:2012-11-20 15:54:57

标签: python django

我有一个像这样的模型Django模型:

class MyModel(models.Model):
  fieldA = models.CharField(max_length=100)
  fieldB = models.IntegerField()
  fieldC = models.IntegerField()

我想找到Max(fieldB + fieldC)。有没有Django方法来做到这一点?或者我必须使用原始sql(如果它会像“选择Max(fieldA + fieldB)来自mymodel_table”)?

提前致谢

1 个答案:

答案 0 :(得分:6)

这是一个相当迂回的解决方案,应该可以运用,改编自Django aggregate queries with expressions

MyModel.objects.extra(select={'sum':'fieldB + fieldC'}).order_by('-sum')[0]

原始的非工作答案(从Django 1.4开始,F()表达式在注释中不起作用)

您可以使用F() expressionsannotation/aggregation为您执行此操作。我想你想要的是什么。

from django.db.models import F, Max
MyModel.objects.annotate(sum=F('fieldB') + F('fieldC')).aggregate(Max('sum'))