如何在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?