Django -Utiliser Q dans un queryset Django
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
On place dans cette fonction les paramètres correspondant aux attributs de notre modèle (comme dans un filter)
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
On peut également utiliser la négation avec l'opérateur tilde
L'intérêt peut être de chercher une valeur dans plusieurs colonnes
Voilà une fonction bien pratique pour manipuler les données au travers l'ORM de Django
blog comments powered by Disqus
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