Как выполнить или условие в django queryset?
Я хочу написать запрос Django, эквивалентный этому SQL-запросу:
SELECT * from user where income >= 5000 or income is NULL.
как построить фильтр Django queryset?
User.objects.filter(income__gte=5000, income=0)
это не работает, потому что AND
s фильтры. Я хочу OR
фильтры для объединения отдельных запросов.
2 ответа:
, потому что реализация запросов питон
__or__
оператор (|
), или союз, он просто работает. Как и следовало ожидать,|
двоичный оператор возвращает aQuerySet
такorder_by()
,.distinct()
, и другие фильтры queryset могут быть прикреплены к концу.combined_queryset = User.objects.filter(income__gte=5000) | User.objects.filter(income__isnull=True) ordered_queryset = combined_queryset.order_by('-income')