我有一個Django的模型,看起來像這樣在Django最新的條目:獲取多個維度
class MyModel(Model):
field_1 = IntegerField()
field_2 = IntegerField()
field_3 = IntegerField()
value = IntegerField()
time_stamp = DateTimeField()
我想找到的(field1, field2, field3)
元組組合的所有集合的最新條目,並抓住價值來自該行的value
。
例如可以說該表將具有以下行:
Field1, Field2, Field3, TimeStamp, Value
1 , 1 , 1 , 1/1/2015 , 1
1 , 1 , 1 , 1/2/2015 , 2
1 , 1 , 2 , 1/1/2015 , 3
2 , 2 , 2 , 1/1/2015 , 4
我希望我的查詢結果返回行2,3,4
我能明顯這樣做:
dims = MyModel.objects.values('field1', 'field2', 'field3').distinct()
for dim in dims:
row = MyModel.objects.filter(**dim).latest('time_stamp')
value = row.value
,但似乎像很多DB的命中,有沒有辦法用更少的觸摸來做到這一點?
這可能不起作用,但你可以試試:'MyModel.objects.values('field_1','field_2','field_3')。distinct()。annotate(latest = Max('time_stamp'))'? –
@ShangWang感謝您的回覆,我已經編輯好讓我的問題更加清晰(希望),我怎樣才能用您的方法保留每行的「價值」? – sedavidw
你是什麼意思'保留每行的價值?它是否涉及你提到的「所有組合」?或者你想顯示每個記錄的所有字段? –