开发者

Django: how to read the db_column name of a model field

I need to know the db_column name of various model fields. On a few models the name is explicitly set by "db_column='foo'", but mo开发者_如何转开发st of the models/fields have the name automatically generated by Django.

How can I retrieve the column_name for all fields from within a model's instance?


There is an undocumented _meta API that's widely used throughout Django for introspecting models. It stores your model options on the type and provides about two dozen methods and attributes to inspect your model and it's fields. You can use it to get all the model fields and then from the fields you can get the column name, since they specify all the business logic:

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

This will return a tuple that will contain the attribute (field) name on the model and the DB column name. For a model field foo = models.IntegerField(db_column='bar'), this would return ('foo', 'bar').


You can do a query on the database using raw SQL and use the answer to this question:

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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜