2013-04-02 17 views
10

ile kombine edilmiş çoklu sütunlar BYO ile Django kullanıyorum. Aşağıdaki benzer bir model vardır:Django ORM query GROUP MAX

class MM(models.Model): 
    a = models.IntegerField() 
    b = models.IntegerField() 
    c = models.DateTimeField(auto_now_add=True) 

Ben ab eşittir birden fazla satır var ve aşağıdaki SQL sorgusu yapmak istiyorum:

SELECT a, b, MAX(c) AS max FROM MM GROUP BY b, a; 

bu ile yapılabilir nasıl Django ORM? Ek açıklamalar kullanarak farklı yaklaşımları denedim, ancak şimdiye kadar şans.

Çok teşekkürler! Eğer kullanım Maksimum şey ithal etmek gerek

MM.objects.all().values('b', 'a').annotate(max=Max('c')) 

Not: from django.db.models import Max

values('b', 'a')GROUP BY b, a ve annotate(...) Sorgunuzda MAX hesaplamak olacaktır verecek

cevap

9

ben gibi bir şey yapabiliriz.

+3

Bilginize 'tüm()' gereksiz ve gerekli değildir. – mynameistechno

0

Bir alan grubunu iki alana göre toplayın.

from django.db.models import Sum 

SQL

select caja_tipo_id, tipo_movimiento, sum(monto) from config_caja group by caja_tipo_id, tipo_movimiento 

Django

objs = Caja.objects.values('caja_tipo__nombre','tipo_movimiento').order_by().annotate(total=Sum('monto')) 
2

Bu deneyebilirsiniz da

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']