如何在django queryset中执行OR条件?
我想写一个相当于这个SQL查询的Django查询:
SELECT * from user where income >= 5000 or income is NULL.
如何构buildDjagno查询集filter?
User.objects.filter(income__gte=5000, income=0)
这不起作用,因为它是filter。 我想OR
filter来获得单个查询集的联合。
from django.db.models import Q User.objects.filter(Q(income__gte=5000) | Q(income__isnull=True))
通过文档
由于QuerySets实现了Python __or__
运算符( |
)或联合,它只是工作。 正如你所期望的那样, |
二元运算符返回一个QuerySet
所以order_by()
.distinct()
和其他查询集filter可以被添加到最后。
combined_queryset = User.objects.filter(income__gte=5000) | User.objects.filter(income__isnull=True) ordered_queryset = combined_queryset.order_by('-income')