2011-08-27 35 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)) 

這是(非常非常輕微!)更直觀。

相關問題