2010-02-23 88 views
1

我有以下結構,例如數據:Django的組/匯聚

id season_id title 
1 1   Intro 
2 1   Second part 
3 1   Third part 
4 4   Other intro 
5 4   Other second part 

(不要問爲什麼),其中season_id總是指向賽季首發的ID ...

什麼我想,得到如下:

1 1   Intro 
4 4   Other intro 

這是第一episoded季節,從技術上來說 - 所有條目與最低season_eid

的,我使用以下查詢來獲取他們的IDS:

Movie.objects.filter(category_type = 2).values('season_eid').annotate(models.Min('season_eid')) 

和ID爲我能得到的所有數據使用Django ORM __in建設對象。

我可以僅使用一個查詢進行分組/註釋並獲取所有字段/值嗎? values + annotate只給出了字典列表,但是我想用其他字段獲得正確的對象(season_eid的最低值/分鐘)。

+0

是的,這是可能的。但是,您應該包含更多模型信息,例如外鍵和類別,以便我們能夠協助 – 2010-02-23 12:47:49

+0

好吧,忘記外鍵和「category_type」 - 我只對季節感興趣。 – bluszcz 2010-02-23 14:53:50

+0

看看我更新的答案。其實很簡單。 – 2010-02-24 10:43:03

回答

1
Movie.objects.annotate(category_min_season = models.Min('category__season_id')).filter(season_id=category_min_season) 

假設您的類別對電影模型有FK。

更新:

其實你甚至不需要註解;這要感謝你存儲在表中的非規格化數據。

你可以這樣做:

Model.objects.filter(id=Q(season_id)) 
+0

這是一個查詢嗎?對我來說,它看起來像兩個查詢... – bluszcz 2010-02-23 14:53:03