2009-10-23 8 views
0

키 - 값 쌍을 파이썬에서 객체로 복사하고 복사하고 싶은 사전이 있습니다. 사전은 POST이고, 객체는 Model입니다 (Django에서는 Django가 더 나은 방법을 가지고 있습니다).사전에서 값을 파이썬으로 객체에 복사하기

PHP에서는, 나는 변수 할당 사용할 수있을 것 :

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

그리고 자바 스크립트에서 내가 배열 할당을 가진 개체를 처리 할 수 ​​그러나

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

을, 나는 수없는 것 파이썬에서 그렇게 할 수 있습니다. 내가 본 유일한 방법은 객체 __dict__ 속성을 사용하는 것인데, 약간 더러운 느낌이 듭니다. 또한 KeyErrors를 높일 수 있습니다.

답변

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

oggy가 ModelForms에 대해 더 깊이 파고 들어야한다고 말하는 것은 당연하다고 생각합니다. 그 does not는 일하지 않는다. 그리고 그가 묻고있는 것이지. 그러나 그는 장고로서 그 이슈에 태그를 붙였다. ... – cethegeek

+0

사실, Django에서 일을하는 더 좋은 방법이었던 대답이 나온다면 장고에 붙였다. 아마도 ModelForms 같은 ... – seanmonstar

4

setattr을 사용할 수는 있지만 상황에 따라 잘못된 방법 일 수 있습니다. 먼저 Django의 ModelForms documentation을 봐야합니다.

+0

ModelForms를 보았습니다. 내가 가지고있는 문제는 모델의 모든 값을 POST하지 않으면 불평한다는 것입니다. 내 원래 목표는 DB에서 모델을 검색하고 게시 한 속성을 변경 한 다음 다시 저장하는 것입니다. – seanmonstar

+4

그런 다음 양식을 올바르게 사용하고 있지 않습니다. 모든 값을 게시하고 싶지 않으면'exclude '를 사용하여 필드에서 제외 시키십시오 (또는'fields' 만 필요로하는 값을 포함 시키십시오). –