我有一个要匹配的不区分大小写的名称列表,有没有办法不使用下面这样的循环?

a = ['name1', 'name2', 'name3']
result = any([Name.objects.filter(name__iexact=name) for name in a])

推荐答案

不幸的是,有no,__iin个字段查找.但是有一个iregex可能是有用的,就像这样:

result = Name.objects.filter(name__iregex=r'(name1|name2|name3)')

甚至:

a = ['name1', 'name2', 'name3']
result = Name.objects.filter(name__iregex=r'(' + '|'.join(a) + ')')

请注意,如果可以包含正则表达式中特殊的字符,则需要将其正确地设置为escape.

新闻:在Django 1.7+中,可以创建自己的查找,因此在正确初始化之后,可以实际使用filter(name__iin=['name1', 'name2', 'name3']).见documentation reference for details.

Django相关问答推荐

如何在REST框架中以SON格式返回错误,而不是HTML格式返回错误?

django命令中的no_color不起作用

Django模型ManyToManyField.Add不起作用

Django为不同应用程序发出信号

当使用django-tinymce时,我在哪里指定referer?

当从 fastapi 发送请求时,Django 无法对 Postgres 执行查询

Django 模型 Select - 只允许管理界面上的特定转换

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

如何根据查询集中的条件返回多个聚合?

Django REST Framework如何在序列化程序中引发验证错误时指定错误代码

django-rest-framework 如何使模型序列化器字段成为必需

Django ORM,按天分组

根据模型属性获取django对象id

NoReverseMatch 错误

如何在 Django 中向 ChoiceField 添加class?

CherryPy 与 Django

AngularJS + Django Rest Framework + CORS(CSRF Coo​​kie 没有出现在客户端)

Django:在管理界面中显示图像

无效的块标签: static

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