Django 查询否定

标签 django negation

我知道如何在 Django 中构建过滤器和 Q 对象,但我不知道如何否定 API 提供的运算符,例如对于 contains 运算符,我想要类似 notcontains 的东西。

例如

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 查询否定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2194901/

相关文章:

css - 如何否定CSS中的所有 child ?

r - r中 "! "和 "- "的区别

Python/Django - 如何在导航到新 View 之前获取页面 URL

django - 在 django 中添加电子邮件 header

python - 操作系统错误 : [Errno 18] Invalid cross-device link

python - 如何在 Django 1.4 中自定义管理过滤器

c++ - 在 C++ 中使用 XOR 0xffffffff 或 ~ 翻转位?

boolean - TCL中的求反运算

c - 否定 !my_function() 如何影响我在 C 中的函数?

python - Django 应用程序在 Heroku 中崩溃