Django: 过滤包含正则表达式字段的模型
我有一个字段用来存储正则表达式(REGEX)模式,现在我想通过一个叫做hostname的变量来过滤模型中的数据。(比如:这里我直接把正则表达式写死了。)
Sys_team.objects.filter(hostname= r'^.*\.amgr\..*')
但是我遇到了这个错误:
FieldError: 无法将关键字 'hostname' 解析为字段。可选项有:alert, id, pattern, pub_date, sys_team
hostname的格式是:xxx.amgr.xxx
这是不是意味着在过滤器的左边只能放字段?如果是这样的话,有没有其他方法可以用正则表达式在左边进行比较?再强调一下,hostname并不是一个字段。
1 个回答
20
使用Django的 __contains
方法。
所以对于你的查询:
Sys_team.objects.filter(hostname__contains='.amgr.')
__contains
是Django ORM中与SQL的 LIKE
关键字相对应的功能。
这里有相关文档: