Python Django ORM查询组由MAX组合的多个列组成
我正在使用Django和MySQL。我有一个类似于以下的模型:Python Django ORM查询组由MAX组合的多个列组成,python,mysql,orm,django-models,Python,Mysql,Orm,Django Models,我正在使用Django和MySQL。我有一个类似于以下的模型: class MM(models.Model): a = models.IntegerField() b = models.IntegerField() c = models.DateTimeField(auto_now_add=True) 我有多行a等于b,我想执行以下SQL查询: SELECT a, b, MAX(c) AS max FROM MM GROUP BY b, a; 如何使用Django O
class MM(models.Model):
a = models.IntegerField()
b = models.IntegerField()
c = models.DateTimeField(auto_now_add=True)
我有多行a
等于b
,我想执行以下SQL查询:
SELECT a, b, MAX(c) AS max FROM MM GROUP BY b, a;
如何使用Django ORM实现这一点?我尝试过使用注释的不同方法,但目前为止运气不错
非常感谢 我想你可以做如下事情:
MM.objects.all().values('b', 'a').annotate(max=Max('c'))
请注意,您需要从django.db导入一些东西来使用Max:。models import Max
值('b','a')
将按b给出分组,a
和注释(…)
将计算查询中的最大值。将一个字段组与两个字段相加
from django.db.models import Sum
SQL
德扬戈
objs = Caja.objects.values('caja_tipo__nombre','tipo_movimiento').order_by().annotate(total=Sum('monto'))
你也可以试试这个
from django.db.models import Max
mm_list=MM.objects.all().values('b','a').annotate(max=Max('c'))
for mm in mm_list:
a=mm['a']
b=mm['b']
max=mm['max']
仅供参考,
all()
是多余的,不是必需的。为了正式起见,这里有“…原始结果根据values()子句中指定的字段的唯一组合进行分组。”
from django.db.models import Max
mm_list=MM.objects.all().values('b','a').annotate(max=Max('c'))
for mm in mm_list:
a=mm['a']
b=mm['b']
max=mm['max']