2009-10-23 76 views
0

我有一個字典,我想要遍歷並將鍵值對複製到Python中的對象中。字典是POST,而對象是一個Model(在Django中,也許Django有更好的方法來做到這一點)。將字典中的值複製到Python中的對象中

在PHP中,我可以使用變量賦值:

foreach($post as $key => $value) { 
    $my_model->$key = $value; 
} 

而且在Javascript中,我可以把與數組賦值的對象:

for(var key in post) { 
    my_model[key] = post[key]; 
} 

不過,我似乎無法在Python中這樣做。我見過的唯一方法是使用對象__dict__屬性,它感覺有點髒。另外它可以引發KeyErrors。

回答

5
for key, value in post.iteritems(): 
    setattr(my_model, key, value) 
+0

我認爲oggy說明他應該深入研究ModelForms是正確的。不是他沒有工作,而是他所要求的,但他確實將問題標記爲django ... – cethegeek 2009-10-23 21:00:39

+0

的確,我將它標記爲Django,以防出現的答案是在Django中做更好的方法,也許就像ModelForms ... – seanmonstar 2009-10-23 22:20:36

4

你可以使用setattr,但它可能是在你的上下文中做錯的方法。你應該先看看Django的ModelForms documentation

+0

我見過ModelForms。我與他們的問題是,如果我沒有發佈模型的所有價值,它抱怨。我最初的目標是從數據庫檢索模型,更改我發佈的屬性,然後將其保存回 – seanmonstar 2009-10-23 17:23:32

+4

然後,您不使用表單權。如果您不想發佈所有值,請使用'exclude'將它們從字段中排除(或'fields'只包含您需要的值)。 – 2009-10-23 18:40:16