Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django ORM查询组由MAX组合的多个列组成_Python_Mysql_Orm_Django Models - Fatal编程技术网

Python Django ORM查询组由MAX组合的多个列组成

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

我正在使用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 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']