我有一个存储REGEX模式的字段,我试图通过将它与传入的名为hostname的变量进行比较来过滤它所在的模型。 (例如:我刚刚对REGEX进行了硬编码。
Sys_team.objects.filter(hostname= r'^.*\.amgr\..*')
我遇到了这个错误:
FieldError: Cannot resolve keyword 'hostname' into field. Choices are: alert, id, pattern, pub_date, sys_team
主机名的格式为:xxx.amgr.xxx
这是否意味着只有字段可以进入过滤器的左侧?如果是这样,是否有另一种方法可以将两者与左侧的REGEX模式进行比较。重申一下,hostname不是字段。
答案 0 :(得分:10)
使用Django __contains
方法。
所以对于你的查询:
Sys_team.objects.filter(hostname__contains='.amgr.')
__contains
是Django ORM等同于SQL LIKE
关键字。
以下是文档: