2015-01-21 40 views
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')) 
+0

當我遍歷ValueSet時,它遍歷所有49條消息。 – fizzyh2o 2015-01-21 07:45:39

回答

0

好像你改變了「做的東西在這裏」代碼或第一次迭代後messages