2013-05-21 5 views
0

J'ai classe appelée jouet, dans lequel les jouets sont soit des animaux ou des fruits.Django interroger par une relation ensemble (inverse)

Quelques exemples de ma base de données,

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

Quand 'Animaux' utilisateur sélectionne, il doit générer Jerry, Scoobie, Leslie, si elle choisit 'fruits' devrait alors afficher Helen, Mark.

je besoin de quelque chose comme ci-dessous

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

ou

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

bien sûr, ils ne fonctionnent pas, aucune idée comment puis-je procéder?

Répondre

1

Sans savoir comment votre modèle ressemble:

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

ou

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

et en troisième lieu (avec tous les types de jouets qui est un fruit ou un animal)

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

Depuis vous ne stockez pas "animal" comme un type selon ce que vous avez décrit, vous n'avez pas besoin de {'Animal':[...], 'Fruit':[...]} .

+0

ok 'type__in' résolu, merci. Mais j'ai toujours besoin du dictionnaire, de toute façon pas important. Je vais accepter cette réponse. –

+0

Je dois utiliser 15 caractères: Pourquoi? Avec la petite information que vous avez fournie et la structure de base de données que vous avez montrée, vous avez peu d'utilité pour "Animal". Pourriez-vous poster votre modèle, s'il vous plaît? Cela pourrait m'aider à vous aider. –

+0

bien que vous dites: 'si (entrée = animal) Toy.objects.filter (type__in = [" Chien "," Chat "]), sinon Toy.objects.filter (type__in = [" Fraise "," Banane "]) '. Cela fonctionne aussi, mais y at-il un avantage, que d'utiliser un dictionnaire et de sauter le if-else? –

Questions connexes