2011-08-19 13 views
5

मैं django के ओआरएम में एक एसक्यूएल क्वेरी का अनुवाद करने की कोशिश कर रहा हूं। एनोटेट() का उपयोग करने का प्रयास किया लेकिन मैं एसक्यूएल क्वेरी से समान परिणाम प्राप्त करने का प्रबंधन नहीं करता हूं।एक क्वेरीसेट समूह के लिए django एनोटेट() और कुल() का उपयोग कैसे करें?

यह मेरा मॉडल है:

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) 

और इस क्वेरी मैं Django में अनुवाद करने का प्रयास है:

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

यह संभव है?

उत्तर

4

मैं अपेक्षित परिणाम इस तरह से मिलता है:

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

बहुत बहुत शुक्रिया @orgoz, कल मैं अपने जवाब की जाँच की है, लेकिन मैं पहले क्वेरी से .values ​​को छोड़ दिया ('id__max'), यह मेरी समस्या हल :) –

संबंधित मुद्दे