【发布时间】:2014-09-17 18:46:29
【问题描述】:
我有一个存储 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 模式进行比较。重申一下,主机名不是一个字段。
【问题讨论】:
-
在左侧,是的,只有您正在查询的模型中的字段或相关模型中的字段。在右侧,您可以使用
django.models.F来引用另一个字段。您还可以使用SysTeam.objects.extra或SysTeam.objects.raw以使用原始 SQL 进行自定义查询。 -
是的,原始 SQL 是一种可能性,但我希望保留它 Django-y。感谢您的回复!
标签: python regex django django-models django-filter