2011-08-27 87 views
3

在Django中,有没有一种方法可以通过使用POST/GET变量来标识要编辑的对象的哪个属性,而不是显式命名它?在Django中保存对象时使用变量

例如,我想这样做:

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)) 

这是(非常非常轻微!)更直观。