2011-08-19 26 views
5

Tôi đang cố gắng dịch một truy vấn sql trong ORM của django. Đã cố gắng sử dụng chú thích() nhưng tôi không quản lý để có được kết quả tương tự so với truy vấn sql.Cách sử dụng chú thích django() và tổng hợp() để nhóm một queryset?

Đây là mô hình của tôi:

class Fuel(models.Model): 
    type = models.CharField(max_length=150) 

class Station(models.Model): 
    name = models.CharField(max_length=150, null=True) 

class Price(models.Model): 
    fuel_type = models.ForeignKey(Fuel) 
    station = models.ForeignKey(Station) 
    price = models.FloatField() 
    date = models.DateTimeField('Date', auto_now_add=True) 

Và đây là câu hỏi tôi cố gắng dịch trong django:

select * from myapp_price where id IN ((select max(id) from myapp_price where station_id=121600 group by fuel_type_id)); 

Đây có phải là có thể?

Trả lời

4

tôi nhận được kết quả mong đợi theo cách này:

q=Price.objects.filter(station=filters['station_id']).values('fuel_type').annotate(Max('id')).values('id__max') 
Price.objects.filter(pk__in=q) 
+0

nhờ một @orgoz rất nhiều, ngày hôm qua tôi đã kiểm tra câu trả lời của bạn nhưng tôi bỏ qua .values ​​('id__max') từ truy vấn đầu tiên, điều này giải quyết vấn đề của tôi :) –

Các vấn đề liên quan