我如何迭代和檢索Django模型的所有字段?Django模型迭代字段
我知道foo.item._meta.get_all_field_names()
帶給我所有的字段名稱。 如何在模型實例上訪問這些字段(包括其實際值)? (除正常記號foo.fieldname
)。
我需要這個,以便爲我的模型構建一個自定義輸出,包括它的manyTomany關係。 任何想法?
我如何迭代和檢索Django模型的所有字段?Django模型迭代字段
我知道foo.item._meta.get_all_field_names()
帶給我所有的字段名稱。 如何在模型實例上訪問這些字段(包括其實際值)? (除正常記號foo.fieldname
)。
我需要這個,以便爲我的模型構建一個自定義輸出,包括它的manyTomany關係。 任何想法?
如何:
getattr(foo.__class__, <field_name>)
這應該給你的域對象,而不是在給定的模型實例的值。如果你想現場在給定的模型insance值,你可以這樣調用:
getattr(foo, <field_name>)
這看起來醜陋,但它的工作:
for each in model_instance._meta.fields:
print each.value_from_object(model_instance)
不過,我還有一個建議。鑑於您的要求是
爲我的模型構建自定義輸出,包括其許多關係的關係。
如何將實例轉換爲合適的格式(XML/JSON)然後處理?這可以避免依賴_meta
或任何內部方法(可能會更改)。
Manoj感謝您的補充。醜陋的人仍然不能解決我ManyToMany關係的問題:(我想我將不得不去串行化! – 2010-08-23 11:13:10
正如你剛纔提到的那樣,這隻會返回字段對象。我需要給定模型實例的字段值。相應地編輯問題... – 2010-08-23 10:44:59
我已經編輯了答案,希望這有助於。 – gruszczy 2010-08-23 10:50:59