Django,找到最多2个字段的总和

编程入门 行业动态 更新时间:2024-10-14 22:22:54
本文介绍了Django,找到最多2个字段的总和的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 我有一个如下的模型Django模型:

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

我想找到Max(fieldB + fieldC)。有没有Django的方式来做到这一点?或者我必须使用原始的sql(如果它会像选择最大值(fieldA + fieldB)从mymodel_table)?

提前感谢

解决方案

这是一个相当迂回的解决方案,应该工作,改编自:

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

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

您可以使用 F()表达式和注释/聚合进行此操作F或者你。我想你想要的是。导入F,Max MyModel.objects.annotate(sum = F('fieldB)'

django.db.models ')+ F('fieldC'))。聚合(Max('sum'))

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

解决方案

Here is a rather roundabout solution that should work, adapted from Django aggregate queries with expressions:

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

Original non-working answer (as of Django 1.4, F() expressions do not work in annotations)

You can use F() expressions and annotation/aggregation to do this for you. I think what you want is.

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

更多推荐

Django,找到最多2个字段的总和

本文发布于:2023-11-30 00:15:59,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1648081.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:最多   字段   总和   Django

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!