2016-07-05 135 views
-1

編寫組查詢我有型號命名IssueFlags的列: ID,created_at,flags_id,ISSUE_ID評論如何通過

我想約flags_id信息唯一ISSUE_ID的數據(最新創建的),created_at和評論

由SQL它的工作是這樣的:

SELECT created_at, flags_id, issue_id, comments 
FROM Issues_issueflags 
group by issue_id 

如何做同樣在Django?我試圖在外殼中寫道某事,但通過

IssueFlags.objects.order_by('-created_at') 

沒有屬性組上面這回我只訂了數據的列表。

+0

可能的重複[如何通過與Django聚合](http://stackoverflow.com/questions/13403609/how-to-group-by-and-aggregate-with-django) – Wtower

+0

帽子的無效的sql (除非你使用的是舊版本的mysql) – e4c5

回答

1

嘗試這樣做是這樣的:

from django.db.models import Count 
IssueFlags.objects.values('created_at', 'flags_id', 'issue_id', 'comments').order_by('-created_at').annotate(total=Count('issue_id')) 

我寫annotate(total=Count('issue_id'))假設你有獨特的ISSUE_ID的多個條目(請注意,你可以做一切可能的類型,如點心聚合的,計數,最大值,平均值內。還有,在Django中已經存在答案,也可以看看這個link或這個link。另外,閱讀這個django documentation可以清楚地知道何時在annotate()之前放置values()以及何時把它放在之後,然後根據你的要求實施學習。

如果您有任何疑問,我們將很樂意爲您提供幫助。

+0

我試過了,但是在響應中我得到了表中的所有行。 – Pablo

0

我試過這個,但在響應中我得到了表中的所有行。 例如我在表中: created_at | flags_id | issue_id |評論

2011/1/1 | 1 | 21 | 'what to do?' 
2011/1/2 | 2 | 21 | 'try this' 
2011/1/3 | 1 | 46 | 'test' 
2011/1/3 | 1 | 21 | 'ok1' 
2011/1/5 | 1 | 21 | 'ok' 

查詢後,我希望能有 created_at | flags_id | issue_id |評論

2011/1/3 | 1 | 46 | 'test' 
2011/1/5 | 1 | 21 | 'ok' 

在這種情況下,我需要有大約21 ISSUE_ID和46

信息我應該嘗試用註釋?

+0

首先,您寫的內容不應作爲答案發布。相反,它應該作爲你的問題的編輯。這可能會讓社區在未來感到困惑(因爲我相信你的答案的一部分是試圖回答我的答案)。 – Shubhanshu

+0

當然。抱歉。我會記住它的未來。 – Pablo

+0

從您發佈的內容中作爲您的要求來判斷,我想您可能並不清楚您想要實現的目標以及該做什麼的組合。在你的情況下,group-by會將具有issue_id = 21的所有行組合在一起,並允許你遍歷與issue_id = 21相關的信息,對於id = 46也是如此。它不會壓縮或聚合您的情況。 – Shubhanshu