我想在我的排除声明中获得和OR操作。
像:
Select all those records where name is NOT Mason and Status is NOT Unactive
Select all those records where name is NOT Mason and Status is active
Users.objects.exclude(name="Mason", active=False)
但这不是OR
操作,而是AND
。如何进行OR
操作。
答案 0 :(得分:2)
为了在OR操作中使用exclude。你必须使用排除两次。
Entry.objects.exclude(pub_date__gt=datetime.date(2005, 1, 3)).exclude(headline='Hello')
User.objects.exclude(name="Mason").exclude(active=False)
答案 1 :(得分:1)
了解complex lookups with Q objects doc。对于你的情况:
from django.db.models import Q
q1 = Q(name="Mason")
q2 = Q(active=False)
Users.objects.exclude( q1 | q2 )
或者,更多关闭你的SQL
#where name is NOT Mason and Status is NOT Unactive
Users.objects.filter( ~q1 & ~q2 )
#where name is NOT Mason and Status is active
q2 = Q(active=True)
Users.objects.filter( ~q1 & q2 )