Как выполнить или условие в Django queryset?
Я хочу написать запрос Django, эквивалентный этому SQL-запросу:
SELECT * from user where income >= 5000 or income is NULL.
как построить фильтр запросов Django?
User.objects.filter(income__gte=5000, income=0)
это не работает, потому что AND
s фильтры. Я хочу OR
фильтры для получения объединения отдельных запросов.
2 ответов
, потому что объекты QuerySet реализации питон __or__
оператор (|
), или union, он просто работает. Как и следовало ожидать,|
двоичный оператор возвращает QuerySet
так 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')