2011-08-27 3 views
3

장고에서는 명시 적으로 이름을 지정하는 대신 POST/GET 변수를 사용하여 편집하려는 객체의 속성을 식별하는 방법이 있습니까?장고에 객체를 저장할 때 변수 사용

예를 들어, 나는이 작업을 수행 할 수 : 대신의

def edit_user_profile(request): 
    field_to_edit = request.POST.get('id') 
    value = request.POST.get('value') 
    user = User.objects.get(pk=request.user.id) 
    user.field_to_edit = strip_tags(value); 
    user.save() 

:

def edit_user_profile(request): 
    value = request.POST.get('value') 
    user = User.objects.get(pk=request.user.id) 
    user.first_name = strip_tags(value); 
    user.save() 
+1

'user = User.objects.get (pk = request.user.id)'를 쓸 이유가 없습니다 -'request.user'는 이미'User' 객체입니다 –

답변

0

당신은 getattr 기능을 사용할 수 있습니다 :

getattr(user, field_to_edit) = strip_tags(value) 
3

가비의 대답은 정확하게이다 네가 원해. 당신은 사용할 수 setattr 대신하지만 (! 아주 아주 약간)이다

setattr(user, field_to_edit, strip_tags(value)) 

보다 직관적.

관련 문제