Votre navigateur n'est pas à jour !

Merci de mettre à jour votre navigateur pour utiliser mon blog. Mettre à jour mon navigateur maintenant

×

Django -Utiliser Q dans un queryset Django

Date de publication 15 nov. 2022
Lorsque l'on utilise un queryset dans Django les paramètres placés dans un filter (ou autre) sont des conditions AND. Si l'on souhaite mettre une condition avec un OR nous allons devoir passer par un objet spécifique à savoir Q.
Cette fonction est placée dans la librairie de Django

from django.db.models import Q

On place dans cette fonction les paramètres correspondant aux attributs de notre modèle (comme dans un filter)

Q(name__icontains="david")

Comme nous l'avons évoqué l'intérêt de Q est de pouvoir faire un OR, donc pour chaîner les conditions Q nous allons utiliser le pipe

Q(name__icontains="david") | Q(name="python")

On peut également utiliser la négation avec l'opérateur tilde

Q(name__icontains="david") | ~Q(name="python")

L'intérêt peut être de chercher une valeur dans plusieurs colonnes

req.filter(Q(first_name=value) | Q(last_name=value))


Voilà une fonction bien pratique pour manipuler les données au travers l'ORM de Django
blog comments powered by Disqus