我需要知道各種模型字段的db_column名稱。在一些模型中,名稱由「db_column ='foo'」明確設置,但大多數模型/字段的名稱都是由Django自動生成的。Django:如何讀取模型字段的db_column名稱
如何從模型實例中檢索所有字段的column_name?
我需要知道各種模型字段的db_column名稱。在一些模型中,名稱由「db_column ='foo'」明確設置,但大多數模型/字段的名稱都是由Django自動生成的。Django:如何讀取模型字段的db_column名稱
如何從模型實例中檢索所有字段的column_name?
有一個未公開的_meta
API,在整個Django中廣泛用於自省模型。它將模型選項存儲在類型上,並提供大約二十種方法和屬性來檢查模型及其字段。你可以用它來獲得所有模型字段,然後從你可以得到列名的領域,因爲它們指定所有的業務邏輯:
for field in Model._meta.fields:
field.get_attname_column()
這將返回一個元組將包含屬性(場)模型名稱和數據庫列名稱。對於模型字段foo = models.IntegerField(db_column='bar')
,這將返回('foo', 'bar')
。
您可以使用原始SQL做數據庫的查詢和使用回答這個問題:
How to get field names when running plain sql query in django。
這就是我一直在尋找 - 謝謝。不過,我發現self._meta.get_field('fieldname')。列更方便。 – user647790 2011-03-09 10:11:01
Model._meta.get_field('foo')。get_attname_column()[1]將返回您的db_column名稱。 只是爲了重述之前的評論用法。 – Danil 2018-02-07 08:42:52