2016-03-04 75 views
3

該網站是從ecchi animes放養pantsu的圖片,通過色彩,角色的名字,動漫的名字,和內衣的類型可能的研究,而不與訂單的任何重要性您選擇選擇任何的標準。Django的請求,只顯示第一個結果

我Pantsu表有外鍵3 - >顏色,類型,女孩

我的女孩表有一個外鍵單一對動漫。

讓我們假設這樣的:

>>> girlList = Girl.objects.all() 
>>> girlList 
>>> [<Girl: Hanekawa Tsubasa>, <Girl: Hachikuji Mayoi>, <Girl: Hitagi Senjōgahara>] 

好了,這就是我們想要的,但是現在,還有一兩件事:

>>> Color.objects.filter(pantsu__P_Girl__Girl_Name='Hachikuji Mayoi')  
[Color: White] 

這仍然是正確的,這個女孩目前只對我的數據庫一個pantsu它是白色的。現在這樣的:

>>> Color.objects.filter(pantsu__P_Girl__Girl_Name='Hanekawa Tsubasa')  
[Color: Black, Color: Pink] 

再次正確的,但來這裏的錯誤的部分,如果我想從我的數據庫獲取所有女孩的顏色,只有具有這2個女孩,我會得到的結果一樣,[白,粉紅色,黑色]或類似的東西,但我不知道。看。

Color.objects.filter(pantsu__P_Girl=girlList) 
[Color: Pink, Color: Black] 

我只能從我的查詢集得到的第一個元素的結果,在這裏我得到的粉紅色和黑色的,因爲girlList的第一個元素是Hanekawa翼,和她搭配粉紅色和黑色。

爲什麼我不能得到查詢集的各個領域相匹配的結果呢?我錯過了什麼嗎?

+0

這將是更好,如果你能表明該模型,而不是他們的描述的相關部分 – Sayse

+2

是'girlList'兩個丫頭對象的列表?那麼你可能需要'Color.objects.filter(pantsu__P_Girl__in = girlList)' – ilse2005

+0

@ ilse2005 - 'girlList'是我想到的初始查詢集(片段1) – Sayse

回答

2

使用__in

Color.objects.filter(pantsu__P_Girl__in=girlList) 

__in接受一個列表作爲輸入,並返回所有與列表中的任何

環節相關女孩屬性的記錄,但按問題,如果girlList總是Girl.objects.all(),那麼你可以使用:

Color.objects.filter(pantsu__P_Girl_isnull=False) 

from django.db.models import Q 
Color.objects.filter(~Q(pantsu__P_Girl=None)) 

此過濾所有沒有女孩爲無

+0

就是這樣它的作品。非常感謝,我會盡力尋找到關於它的文檔會談,看看還有什麼我可能已經錯過了。 – Wolorin

+0

我在我的答案中鏈接了文檔;) – ilse2005

4

好顏色的物體,從而girllist是你必須使用__in列表:

Color.objects.filter(pantsu__P_Girl__in=girlList) 

否則就只能使用第一個條目在列表中。

+0

雖然是正確的,但我不禁想到,因爲girl_list包含了每個女孩,所以這可能是更高效的查詢 – Sayse

+0

就是這樣!謝謝你的作品! – Wolorin

+1

@Sayse然後我想我們可以使用'〜Q(pantsu__P_Girl = None)'如果它總是所有Girl對象 –