J'essaie d'utiliser la méthode .filter() de Django avec une liste d'objets enfants liés pour renvoyer l'ensemble d'objets parent qui contient tous les enregistrements enfants. Voir l'exemple ci-dessous.Django Filtre QuerySet sur la liste à l'aide de AND
L'utilisateur est l'objet parent et la couleur est l'objet enfant directement lié à l'utilisateur
- User1 a des couleurs [rouge, bleu]
- User2 a des couleurs [noir, violet, vert, bleu]
- User3 a des couleurs [rouge, bleu, vert]
Utilisateur4 a des couleurs [rouge, bleu, vert, blanc]
utilisateurs = users.filter (user_colors__color__in = couleurs)
couleurs est une liste définie par le POST. Par exemple. [rouge, bleu, vert]
Actuellement, les utilisateurs contiennent l'ensemble des utilisateurs qui ont [rouge, bleu, vert]. Pour l'exemple ci-dessus, j'obtiens actuellement User1, User2, User3 et User4 avec le code ci-dessus. C'est à dire. il utilise une recherche OU. Je veux retourner seulement les utilisateurs qui ont TOUTES les couleurs spécifiées. C'est à dire. utilisez une recherche AND. Pour l'exemple ci-dessus, je veux seulement obtenir User3 et User4. Quel est le meilleur moyen d'obtenir uniquement l'ensemble des enregistrements parents (utilisateurs) qui ont tous les enregistrements enfants (couleurs) demandés? Y at-il une méthode Django qui peut le faire facilement? Ou ai-je besoin d'une boucle qui filtre sur chaque couleur?
Merci!
Je vous suggère de lire sur API Django queryset [ici] (https: //docs.djangoproject. com/fr/1.10/ref/models/querysets /) – hassan
Veuillez poster vos modèles afin que nous puissions voir comment la relation est définie. – 2ps