2013-05-21 47 views
0

我有一個叫做Toy的類,其中玩具是動物或水果。Django通過一組關係查詢(反轉)

從我的數據庫的一些例子,

|name|type|pk| 
|Jerry|Cat|33| 
|Scoobie|Dog|52| 
|Leslie|Dog|73| 
|Helen|Strawbery|86| 
|Mark|Banana|16| 

當用戶選擇「動物」,它應該輸出傑裏,Scoobie,萊斯利,如果選擇了「水果」它應該輸出海倫,馬克

我需要像下面

myDict={'Animal':'Cat' or 'Dog', 'Fruits':'Strawberry' or 'Banana'} 
Toy.objects.filter(type = myDict[input]) 

myDict={'Animal':['Cat' ,'Dog'], 'Fruits':['Strawberry' , 'Banana']} 
Toy.objects.filter(type in myDict[input]) 
當然他們不工作的

,任何想法我怎麼能繼續嗎?

回答

1

不知道你的模型的樣子:

Toy.objects.filter(type__in=["Dog", "Cat"]) 

Toy.objects.filter(type__in=["Strawberry", "Banana"]) 

和第三(與所有玩具類型是一種水果或動物)

Toy.objects.filter(type__in=["Dog", "Cat", "Strawberry", "Banana"]) 

由於根據你所描述的你不需要存儲「動物」作爲一種類型{'Animal':[...], 'Fruit':[...]}

+0

ok'type__in'解決了,謝謝。但是我仍然需要字典,反正不重要。我會接受這個答案。 –

+0

我必須使用15個字符:爲什麼?用你提供的小信息和你顯示的數據庫結構,你對「動物」幾乎沒有用處。你可以發佈你的模型嗎?這可以幫助我幫助你。 –

+0

好吧你在說:'if(input = animal)Toy.objects.filter(type__in = [「Dog」,「Cat」]),否則Toy.objects.filter(type__in = [「Strawberry」,「Banana」] )'。這也有效,但是有沒有比使用字典和跳過if-else更好的優勢? –