【发布时间】:2011-03-09 08:44:37
【问题描述】:
我需要知道各种模型字段的 db_column 名称。在少数模型上,名称由“db_column='foo'”显式设置,但大多数模型/字段的名称由 Django 自动生成。
如何从模型实例中检索 所有 字段的 column_name?
【问题讨论】:
我需要知道各种模型字段的 db_column 名称。在少数模型上,名称由“db_column='foo'”显式设置,但大多数模型/字段的名称由 Django 自动生成。
如何从模型实例中检索 所有 字段的 column_name?
【问题讨论】:
有一个未记录的_meta API 在整个 Django 中被广泛用于内省模型。它将您的模型选项存储在类型上,并提供大约两打方法和属性来检查您的模型及其字段。您可以使用它来获取所有模型字段,然后从字段中获取列名,因为它们指定了所有业务逻辑:
for field in Model._meta.fields:
field.get_attname_column()
这将返回一个元组,其中包含模型上的属性(字段)名称和数据库列名称。对于模型字段foo = models.IntegerField(db_column='bar'),这将返回('foo', 'bar')。
【讨论】:
您可以使用原始 SQL 对数据库进行查询并使用此问题的答案:
How to get field names when running plain sql query in django.
【讨论】: