2010-01-03 50 views
0

我的字段列表的對象:Django的訪問模型對象字段上運行時

fields = ('title', 'first_name', 'last_name) 

現在我要訪問我的運行時對象的字段,沒有harcoding像這樣。

myobject.title 

我正在尋找的是這樣的:

myobject.getFieldValue('title') 

有沒有這樣在Django的方法?我沒有找到一個。

+0

這是重複的。 http://stackoverflow.com/questions/1545645/how-to-set-django-model-field-by-name – 2010-01-03 17:04:28

回答

4

不是Django的方法,而是一個標準的Python內置:

getattr(myobject, 'title') 
+0

謝謝!這樣可行! – 2010-01-03 18:17:40

0

但是,如果你可以通過一些訪問對象的屬性,這樣myobject.title,你爲什麼要經理(在數據庫中的情況下,查詢)還是一個函數來做到這一點?

+0

我認爲有一些使用情況下,你想訪問一個字段的值,而不用硬印。我的用例如下:我有一個視圖,用於顯示錶中的所有聯繫人。該表是基於名爲HEADERS_CONTACT的列表創建的。我在不同的視圖和功能中使用這個列表。一個功能是導出聯繫人。這裏我想導出與HEADERS_CONTACT中定義的值相同的值。因此,如果我決定在聯繫人概覽中提供聯繫人的更多詳細信息,我將更改HEADERS_CONTACT列表,並確保我的導出功能將相應地導出值。 – 2010-01-03 18:21:28

+0

我們有一些我們在大量數據庫模型中使用的MixIn類。大多數*但不是所有*都有一個特定的字段(例如'title'),所以在MixIn類的方法中,我們必須使用hasattr()來確保它能夠工作,然後getattr(),通常使用默認提供的價值。 – 2010-01-04 04:07:39