0
我正在使用Django 1.7並試圖進行聚合查詢。他們的查詢似乎工作,直到我遍歷ValueSet。Django 1.7如何在註釋後訪問值
>> messages = Message.objects.filter(is_outgoing=False)
.values('contact_id').annotate(Max('created')
>> messages.count()
5
這是正確的。只有5個唯一的聯繫人。當我做messages.count()我得到49這是不是由客戶端分組消息的總數
for m in messages:
do stuff here
現在:
但是,一旦我做到這一點。
如何遍歷ValueSet並只獲取最近5條消息?
編輯:
我找出發生了什麼事。我在Message類中將Meta.ordering設置爲'-created'。這意味着ORM正在創建一個group,所以生成的查詢是由'created'和'contact_id'分組的。
我在annotate()之前添加了一個order_by()來刪除默認排序並修復了問題。
messages = Message.objects.filter(is_outgoing=False)
.values('contact_id').order_by().annotate(Max('created'))
當我遍歷ValueSet時,它遍歷所有49條消息。 – fizzyh2o 2015-01-21 07:45:39