从一个示例中,您可以看到一个多OR查询过滤:

Article.objects.filter(Q(pk=1) | Q(pk=2) | Q(pk=3))

例如,这会导致:

[<Article: Hello>, <Article: Goodbye>, <Article: Hello and goodbye>]

但是,我想从列表创建这个查询过滤.如何做到这一点呢?

例如[1, 2, 3] -> Article.objects.filter(Q(pk=1) | Q(pk=2) | Q(pk=3))

推荐答案

您可以按如下方式链接查询:

values = [1,2,3]

# Turn list of values into list of Q objects
queries = [Q(pk=value) for value in values]

# Take one Q object from the list
query = queries.pop()

# Or the Q object with the ones remaining in the list
for item in queries:
    query |= item

# Query the model
Article.objects.filter(query)

Django相关问答推荐

如何在Django模型mixin字段定义中引用模型名称?

Django和静态文件

如何从列中捕获数据并将其添加到下拉菜单中,以便表单填充另一个表

Django prefetch_related 与 3 个不直接相关的模型

来自日历的 Django 动态 url

Docker 中的 Django检测到更改...,正在重新加载错误

如何使用具有某些权限的 Django 组的转储数据和加载数据?

防止 django 将_id附加到外键字段

如何将表单中的用户字段设置为当前登录的用户?

Django ORM,按天分组

Django App 配置不当 - 应用程序模块有多个文件系统位置

如何在 Django Rest Framework SimpleRouter 上使斜杠可选

ImportError:升级到 Django 4.0 后无法从 'django.conf.urls' 导入名称 'url'

Django 有 SmallIntegerField 的原因是什么?

django 静态文件版本控制

ProgrammingError: 安装 Psycopg2 后,关系django_session不存在错误

Django 应用程序运行良好,但收到 TEMPLATE_* 警告消息

暂时禁用 Django 缓存

Django:如何从模板中识别调用视图?

Django 测试客户端方法覆盖标头