Django:如何读取模型字段的db_column名称

use*_*790 10 python django

我需要知道各种模型字段的db_column名称.在一些模型上,名称由"db_column ='foo'"显式设置,但大多数模型/字段具有Django自动生成的名称.

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

Fil*_*vić 24

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

for field in Model._meta.fields:
    field.get_attname_column()
Run Code Online (Sandbox Code Playgroud)

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

  • 这就是我想要的 - 谢谢.但是我发现self._meta.get_field('fieldname').列更方便. (7认同)