python - queries - ¿Cómo realizar la condición OR en django queryset?
orm django queries (2)
Como QuerySets implementa el operador Python __or__
( |
), o union, simplemente funciona. Como era de esperar, el |
el operador binario devuelve un QuerySet
por lo que order_by()
, .distinct()
y otros filtros queryset se pueden agregar al final.
combined_queryset = User.objects.filter(income__gte=5000) | User.objects.filter(income__isnull=True)
ordered_queryset = combined_queryset.order_by(''-income'')
Quiero escribir una consulta de Django equivalente a esta consulta SQL:
SELECT * from user where income >= 5000 or income is NULL.
¿Cómo construir el filtro queryset Django?
User.objects.filter(income__gte=5000, income=0)
Esto no funciona, porque es AND
los filtros. Quiero OR
los filtros para obtener la unión de querysets individuales.
from django.db.models import Q
User.objects.filter(Q(income__gte=5000) | Q(income__isnull=True))