如何在django queryset中执行OR条件?
我想写一个相当于这个SQL查询的Django查询:
SELECT * from user where income >= 5000 or income is NULL.
如何构建Djagno查询集过滤器?
User.objects.filter(income__gte=5000, income=0)
这是不行的,因为它AND
S中的过滤器。 我想OR
过滤器来获得单个查询集的联合。
from django.db.models import Q
User.objects.filter(Q(income__gte=5000) | Q(income__isnull=True))
通过文档
由于QuerySets实现了Python __or__
运算符( |
)或联合,它只是起作用。 正如你所期望的那样, |
二元运算符返回一个QuerySet
因此可以将order_by()
.distinct()
和其他查询集过滤器添加到最后。
combined_queryset = User.objects.filter(income__gte=5000) | User.objects.filter(income__isnull=True)
ordered_queryset = combined_queryset.order_by('-income')
链接地址: http://www.djcxy.com/p/76435.html
上一篇: How to perform OR condition in django queryset?
下一篇: Query a Django queryset without creating a new queryset?