參考:http://stackoverflow.com/questions/6567831/how-to-perform-or-condition-in-django-querysetpython
django自帶的orm,雖然給咱們寫代碼帶來了方便,可是因爲自己的一些限制,有些複雜的sql查詢語句沒辦法時間,今天就說一下django orm中的 或者 查詢。sql
SELECT * from user where income >= 5000 or income is NULL.
上面的sql語句咱們查詢收入大於5000或者收入 爲空的記錄。下面介紹兩種方法實現 or 查詢django
第一種方法:使用 Q查詢code
from django.db.models import Q User.objects.filter(Q(income__gte=5000) | Q(income__isnull=True))
第二種方法:使用 管道符號 | ,orm
combined_queryset = User.objects.filter(income__gte=5000) | User.objects.filter(income__isnull=True) ordered_queryset = combined_queryset.order_by('-income')