目标是实现:

我想要名称属性包含列表中任何单词的所有对象.

我有:

list = ['word1','word2','word3']
ob_list = data.objects.filter( // What to write here ?  )
// or any other way to get the objects where any word in list is contained, in 
// the na-me attribute of data.

例如:

if name="this is word2":则应该返回具有这样的名称的对象,因为Word2在列表中.

请帮帮我!

推荐答案

您可以使用Q objects构造一个查询,如下所示:

from django.db.models import Q

ob_list = data.objects.filter(reduce(lambda x, y: x | y, [Q(name__contains=word) for word in list]))

编辑:

reduce(lambda x, y: x | y, [Q(name__contains=word) for word in list]))

是一种奇特的写作方式

Q(name__contains=list[0]) | Q(name__contains=list[1]) | ... | Q(name__contains=list[-1])

还可以使用显式for循环来构造Q对象.

Django相关问答推荐

如何在Django REST框架中使用FactoryBoy创建不同的项目

在Django的个人页面中的问题

注册新用户时,对象没有属性';is_active';错误:';NoneType';对象没有属性

如何删除Docker上的django应用程序?

Django 模型:如何查找自动生成的字段列表

如何将数据库中的 None 序列化为空对象?

Django ORM __in 但不是精确的,包含不区分大小写的?

未为部署的 django rest 框架加载静态文件

Django基于类的视图上的success_url的反向抱怨循环导入

在 Django 的 TextField 中禁用 HTML 转义

Django REST Framework - 将额外参数传递给操作

如何从 django 自定义中间件类返回 rest_framework.response 对象?

Ruby on Rails 会影响网页的外观吗?

django npm 和 node 包架构

这是验证 Django 模型字段的方法吗?

Celery - 在一台服务器上运行不同的工作人员

如何更改模型标签并给它一个自定义名称

Django 用户配置文件

XlsxWriter 对象另存为 http 响应以在 Django 中创建下载

使用 .order_by() 和 .latest() 的 Django 查询