2010-04-27 7 views
2

Je ne peux pas faire un ET sur deux jeux de requête. Comme dans, q1 & q2. Je reçois l'ensemble vide et je ne sais pas pourquoi. J'ai testé cela avec les cas les plus simples. J'utilise django 1.1.1Intersection de deux jeux de requête dans django

J'ai des objets essentiellement comme ceci:

item1 
    name="Joe" 
    color = "blue" 
item2 
    name="Jim" 
    color = "blue" 
    color = "white" 
item3 
    name="John" 
    color = "red" 
    color = "white" 

Y at-il quelque chose de bizarre d'avoir un many-to-many ou qu'est-ce que je manque?

queryset1 = Item.objects.filter(color="blue")
cela donne (article1, article2)

queryset2 = Item.objects.filter(color="white")
cela donne (item2, item3)

queryset1 & queryset2 me donne l'ensemble vide []
L'opérateur OR fonctionne très bien (je suis en utilisant "|")

Pourquoi est-ce ainsi?

+1

Pourriez-vous ajouter des classes de modèle pour l'article et la couleur? – Yaroslav

+0

Les attributs ne peuvent avoir qu'une seule valeur, il n'y a donc pas moyen d'avoir des objets comme ça. –

Répondre

3
qs = Item.objects.filter(color__in=['blue','white']) 
1
Item.objects.filter(color="blue").filter(color="white")