Django: как прочитать имя db_column поля модели - PullRequest
10 голосов
/ 09 марта 2011

Мне нужно знать имя db_column различных полей модели.В некоторых моделях имя явно задается как "db_column = 'foo'", но большинство моделей / полей имеют имя, автоматически генерируемое Django.

Как я могу получить имя столбца для все поля из экземпляра модели?

Ответы [ 2 ]

22 голосов
/ 09 марта 2011

Существует недокументированный _meta API, который широко используется в Django для самоанализа моделей. Он хранит параметры вашей модели для типа и предоставляет около двух десятков методов и атрибутов для проверки вашей модели и ее полей. Вы можете использовать его, чтобы получить все поля модели, а затем из полей вы можете получить имя столбца, так как они определяют всю бизнес-логику:

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

Это вернет кортеж, который будет содержать имя атрибута (поля) модели и имя столбца БД. Для поля модели foo = models.IntegerField(db_column='bar') это вернет ('foo', 'bar').

0 голосов
/ 09 марта 2011

Вы можете сделать запрос к базе данных, используя сырой SQL, и использовать ответ на этот вопрос:

Как получить имена полей при выполнении простого SQL-запроса в django .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...