4

I have a model Django model like this:

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

I want to find the Max(fieldB + fieldC). Is there a Django way to do this? Or do I have to go with raw sql (in case it will be something like "Select Max(fieldA + fieldB) From mymodel_table")?

Thanks in advance

4

1 に答える 1

7

これは、式を使用した Django 集計クエリから適応された、かなり回りくどい解決策です。

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

元の機能しない回答 (Django 1.4 以降、F() 式は注釈では機能しません)

F() 式注釈/集約を使用して、これを行うことができます。私はあなたが望むものだと思います。

from django.db.models import F, Max
MyModel.objects.annotate(sum=F('fieldB') + F('fieldC')).aggregate(Max('sum'))
于 2012-11-20T16:05:19.153 に答える