Django:过滤包含存储Regex字段的模型

时间:2014-07-25 20:11:42

标签: python regex django django-models django-filter

我有一个存储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不是字段。

1 个答案:

答案 0 :(得分:10)

使用Django __contains方法。

所以对于你的查询:

Sys_team.objects.filter(hostname__contains='.amgr.')

__contains是Django ORM等同于SQL LIKE关键字。

以下是文档:

https://docs.djangoproject.com/en/dev/topics/db/queries/#escaping-percent-signs-and-underscores-in-like-statements