【问题标题】:django Field names must not end with an underscore. Field names must not contain __django 字段名称不能以下划线结尾。字段名称不得包含 __
【发布时间】:2023-04-07 02:05:01
【问题描述】:

我是 django 的新手。在参考 django 检查框架文档时,我遇到了以下几点:-

  • Field names must not end with an underscore.
  • Field names must not contain "__".

我不知道为什么存在这样的限制。此外,django 文档并不清楚这种限制。我用谷歌搜索过同样的问题,但找不到任何好的答案。

提前致谢。

【问题讨论】:

    标签: python django django-models orm


    【解决方案1】:

    存在此限制是因为 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']

    【讨论】:

    • 第一个限制怎么样(字段名不能以下划线结尾)?
    • @user2393267 可能会干扰同样的事情
    猜你喜欢
    • 1970-01-01
    • 2017-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多