Как выполнить или условие в django queryset?
Я хочу написать запрос Django, эквивалентный этому SQL-запросу:
SELECT * from user where income >= 5000 or income is NULL.
как построить фильтр Django queryset?
User.objects.filter(income__gte=5000, income=0)
это не работает, потому что ANDs фильтры. Я хочу 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')