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

13 投票
2 回答
15541 浏览
提问于 2025-04-16 13:19

我想知道不同模型字段的数据库列名。在一些模型中,列名是通过“db_column='foo'”明确设置的,但大多数模型/字段的名字是Django自动生成的。

我该如何从模型的实例中获取所有字段的列名呢?

2 个回答

0

你可以直接用原始的SQL语句在数据库上查询,然后用这个问题的答案来帮助你:

在Django中如何在运行普通SQL查询时获取字段名称

32

在Django中,有一个不太被文档详细说明的 _meta API,很多地方都在用它来查看模型的内部信息。它会把你的模型选项存储在类型上,并提供大约二十个方法和属性,让你可以检查你的模型及其字段。你可以用它来获取所有模型字段,然后从这些字段中获取列名,因为它们定义了所有的业务逻辑:

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

这个操作会返回一个元组,里面包含模型的属性(字段)名称和数据库的列名。比如,对于一个模型字段 foo = models.IntegerField(db_column='bar'),这个操作会返回 ('foo', 'bar')

撰写回答