1
我正在試圖找出從Field
對象獲取模型字段的名稱的建議方法。Django從Field對象中獲取字段的名稱
看來field.name
作品(這是我從一些SO帖子發現)如果field
是對象名稱,但令人驚訝的不是在docs提及任何地方,所以想知道,如果它仍然是最好的辦法還是我失去了一些東西很明顯?
我正在試圖找出從Field
對象獲取模型字段的名稱的建議方法。Django從Field對象中獲取字段的名稱
看來field.name
作品(這是我從一些SO帖子發現)如果field
是對象名稱,但令人驚訝的不是在docs提及任何地方,所以想知道,如果它仍然是最好的辦法還是我失去了一些東西很明顯?
看來這是獲取模型字段名稱的正確方法。 field.name
也在docs使用(請參閱在頁面的底部)解釋的新模式,從舊的API遷移時_meta
API:
MyModel._meta.get_all_field_names()變爲:
from itertools import chain list(set(chain.from_iterable( (field.name, field.attname) if hasattr(field, 'attname') else (field.name,) for field in MyModel._meta.get_fields() # For complete backwards compatibility, you may want to exclude # GenericForeignKey from the results. if not (field.many_to_one and field.related_model is None) )))
和
[f.name for f in MyModel._meta.get_fields()]
而且感覺邏輯上是如此,因爲,在另一方面,當你想用它的名字字段對象you can get it:
f = MyModel._meta.get_field(name)
所以f.name
將是字段的名稱。
謝謝 - 是的,我也看到它,但想知道爲什麼它不在主要的字段選項參考。也許只是一個文檔錯誤。 – Anupam
@Anupam看來這是得名的方法。請參閱[這個舊的答案](http://stackoverflow.com/a/3106314/1418794)。 – doru
@Anupam是的,我認爲是缺乏文檔 – doru