【问题标题】:Django, find max of the sum of 2 fieldsDjango,找到2个字段总和的最大值
【发布时间】:2012-11-08 17:50:16
【问题描述】:

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

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

我想找到 Max(fieldB + fieldC)。有没有 Django 方法可以做到这一点?还是我必须使用原始 sql(以防它类似于“从 mymodel_table 中选择 Max(fieldA + fieldB)”)?

提前致谢

【问题讨论】:

  • *raw sql is Select Max(fieldB + fieldC) From mymodel_table..

标签: python django


【解决方案1】:

这是一个应该可行的相当迂回的解决方案,改编自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'))

【讨论】:

猜你喜欢
  • 2021-10-12
  • 2018-12-28
  • 2018-04-24
  • 2021-05-26
  • 1970-01-01
  • 2011-03-22
  • 2022-09-27
  • 2021-04-07
  • 1970-01-01
相关资源
最近更新 更多