我是django的新手。在提到django check框架文档时,我遇到了以下几点: -
Field names must not end with an underscore.
Field names must not contain "__".
我无法知道,为什么存在这种限制。此外,django文档并不清楚这种限制。我用Google搜索了同样的内容,但也没有得到任何好的答案。
提前致谢。
答案 0 :(得分:4)
存在这种限制是因为django在过滤器查找中使用__
。
https://docs.djangoproject.com/en/1.10/topics/db/queries/#lookups-that-span-relationships
Django提供了一种强大而直观的方式来“跟踪”查找中的关系,在后台自动处理SQL JOIN。要跨越关系,只需使用模型中相关字段的字段名称,用双下划线分隔,直到到达所需字段。
因此,在字段名称中使用它会破坏查找解析
对于尾随下划线是同样的原因。如果您在字段名称中将其分隔,则test___field.split('__')
将变为['test', '_field']
而不是['test_', 'field']
。