2010-10-15 5 views
0

Existe-t-il un moyen rapide et facile de faire cela? Je n'ai pas été en mesure de trouver quelque chose qui est déjà là-bas qui semble déjà le faire.Django - Faire deux requêtes séparées, combiner les résultats, puis éliminer les doublons

Puisqu'il s'agit d'un jeu de requête, je ne pense pas que je puisse utiliser les propriétés uniques de Set pour résoudre le problème non plus. des idées?

+0

double possible ou http://stackoverflow.com/questions/108193/union-and-intersect-in-django –

Répondre

4

Utilisez les objets Q, un pour chaque requête et OR ensemble. Ensuite, utilisez distinc()

qs = SomeModel.objects.get(Q(some_attribute=something) | 
          Q(some_other_attribute=something)).distinct() 
+0

intéressant, merci! Malheureusement, j'utilise un backend qui ne supporte pas le mot-clé "OR", donc il ne peut pas l'exécuter comme une seule requête, mais deux complètement séparées. Je n'ai pas été capable de trouver un moyen d'utiliser le distinct sur deux requêtes complètement distinctes – killerbarney

+1

Eh bien, si vous n'avez pas besoin d'un query-set en retour, vous pourriez simplement faire results = set (list (qs1) + list (qs2)). –

Questions connexes