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