我知道如何在django中构建过滤器和Q对象,但我不知道如何否定API提供的运算符,例如对于包含运算符,我希望使用notcontains之类的运算符.

例如

q=Q(name__notcontains="SomeString")

这将使我获得名称不包含"SomeString"的所有对象.

我有没有遗漏一些语法?

谢谢你.

推荐答案

你可以用exclude()代替filter():

Entry.objects.exclude(name__contains="SomeString")

("给我所有条目,除了names包含"SomeString"的条目)

在处理Q宾语时,可以在Q宾语前使用"~"符号来表示否定.例如,下面的语句表示"给我所有包含"Elephant"但不包含"SomeString"的names条目:

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中未被散列,则对其进行散列

Django OneToOneFieldto抽象对象

使用自定义模型注册后,Django无法登录

在 Django 4.1 中提交表单之前显示数据

Django AWS S3对象存储boto3媒体上传报错

在 django 中使用自定义 url 转换器传递 url 参数

Django - 是否可以为查询集预取单个字段的多个过滤器?

在 Django Admin change_list 视图中更改 list_editable 字段时保存 Django 模型

Django 嵌套事务 - with transaction.atomic()

在 GoDaddy 上安装 django 站点

如何在 Django 中创建一个独特的 slug

使用 Vagrant 进行端口转发时连接重置

Django:想要将一个空字段显示为空白而不是显示无

如何在 forms.Form 子类上动态设置 models.ModelChoiceField 的查询集

使用基于日期/时间的对象进行 Django 单元测试

Django:显示在每个页面上加载页面所花费的时间

在 Mac OS X 上安装支持 JPEG 的 PIL

Django urls 直接到 html 模板

django.core.servers.basehttp.FileWrapper 在 Django 1.9 中消失

Django - 保存新对象时如何获取 self.id?