我知道如何在django中构建过滤器和Q对象,但我不知道如何否定API提供的运算符,例如,对于我想要notcontains的contains运算符。
例如
q=Q(name__notcontains="SomeString")
这将使我获得所有名称不包含“SomeString”的对象。
我缺少一些语法吗?
谢谢。
最佳答案
您可以使用 exclude()
代替filter()
:
Entry.objects.exclude(name__contains="SomeString")
(“给我所有条目,但那些带有
names
且包含“SomeString”的条目除外)并且当处理Q对象时,可以在Q对象之前使用“〜”符号来表示否定。例如,以下语句的意思是“给我所有
names
包含“Elephant”但不包含“SomeString”的条目:Entry.objects.filter(Q(name__contains="Elephant") & ~Q(name__contains="SomeString"))
在某些情况下,您可能要同时使用两种方法:
Entry.objects.exclude(Q(name__contains="Elephant") & ~Q(name__contains="SomeString"))
(“给我所有条目,但
names
包含“Elephant”但不包含“SomeString”的条目除外))关于django - Django查询否定,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2194901/