【问题标题】:Django: how to read the db_column name of a model fieldDjango:如何读取模型字段的 db_column 名称
【发布时间】:2011-03-09 08:44:37
【问题描述】:

我需要知道各种模型字段的 db_column 名称。在少数模型上,名称由“db_column='foo'”显式设置,但大多数模型/字段的名称由 Django 自动生成。

如何从模型实例中检索 所有 字段的 column_name?

【问题讨论】:

    标签: python django


    【解决方案1】:

    有一个未记录的_meta API 在整个 Django 中被广泛用于内省模型。它将您的模型选项存储在类型上,并提供大约两打方法和属性来检查您的模型及其字段。您可以使用它来获取所有模型字段,然后从字段中获取列名,因为它们指定了所有业务逻辑:

    for field in Model._meta.fields:
        field.get_attname_column()
    

    这将返回一个元组,其中包含模型上的属性(字段)名称和数据库列名称。对于模型字段foo = models.IntegerField(db_column='bar'),这将返回('foo', 'bar')

    【讨论】:

    • 这就是我要找的 - 谢谢。但是我发现 self._meta.get_field('fieldname').column 更方便。
    • Model._meta.get_field('foo').get_attname_column()[1] 将返回您的 db_column 名称。只是回顾一下之前的评论用法。
    【解决方案2】:

    您可以使用原始 SQL 对数据库进行查询并使用此问题的答案:

    How to get field names when running plain sql query in django.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-26
      • 1970-01-01
      • 2012-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多