我知道如何在django中构建过滤器和Q对象,但我不知道如何否定API提供的运算符,例如对于包含运算符我想要的东西就像notcontains.
例如
q=Q(name__notcontains="SomeString")
Run Code Online (Sandbox Code Playgroud)
这将获得所有名称不包含"SomeString"的对象.
是否有一些我缺少的语法?
谢谢.
Lud*_*mer 62
你可以用来exclude()代替filter():
Entry.objects.exclude(name__contains="SomeString")
Run Code Online (Sandbox Code Playgroud)
("除了那些names包含"SomeString"的条目外,给我所有条目)
在处理Q对象时,可以在Q对象之前使用"〜"符号来表示否定.例如,以下语句表示"给我所有names包含"Elephant"的条目,但不包含"SomeString":
Entry.objects.filter(Q(name__contains="Elephant") & ~Q(name__contains="SomeString"))
Run Code Online (Sandbox Code Playgroud)
在某些情况下,您可能希望使用这两种方法:
Entry.objects.exclude(Q(name__contains="Elephant") & ~Q(name__contains="SomeString"))
Run Code Online (Sandbox Code Playgroud)
("给我所有条目,除了names含有"大象"的条目,但不包含"SomeString")
| 归档时间: |
|
| 查看次数: |
20259 次 |
| 最近记录: |