我想訪問我的模型字段verbose_name。如何動態地訪問Django Model字段詳細名稱?
我可以現場獲得指數之像這樣
model._meta._fields()[2].verbose_name
,但我需要動態地得到它。理想情況下,這將是這樣的
model._meta._fields()['location_x'].verbose_name
我已經看了幾件事,但我無法找到它。
我想訪問我的模型字段verbose_name。如何動態地訪問Django Model字段詳細名稱?
我可以現場獲得指數之像這樣
model._meta._fields()[2].verbose_name
,但我需要動態地得到它。理想情況下,這將是這樣的
model._meta._fields()['location_x'].verbose_name
我已經看了幾件事,但我無法找到它。
Django的< 1.10:
model._meta.get_field_by_name('location_x')[0].verbose_name
model._meta.get_field_by_name('location_x')[0].verbose_name
model._meta.get_field('location_x').verbose_name
選擇的答案給出了一個代理對象,它看起來如下。
<django.utils.functional.__proxy__ object at 0x{SomeMemoryLocation}>
如果有人看到了同樣的,你可以找到在代理對象的標題()成員函數的詳細名稱的字符串。
一種更好的方式來寫,這將是:
model._meta.get_field(header).verbose_name.title()
其中header
將是你感興趣的字段的名稱,即在OP的背景下「位置-X」。
注意:Django的開發商也覺得使用get_field
較好,因此已經在Django 1.10貶值get_field_by_name
。因此,無論您使用何種版本的Django,我都建議使用get_field
。
Django的1.11和2.0:在Django doc
更多的信息,我得到' '海峽' 對象有沒有屬性「_meta''錯誤。 Django 1.7。 – 2014-11-13 07:33:53
@MikhailBatcer:我不知道怎麼把這個分解給你,但是......字符串沒有字段。 – 2014-11-13 07:39:23
嗯,它是在你的代碼段中傳遞的模型對象,而不是字符串,不是嗎? – 2014-11-13 07:44:31