在Django中保存对象时使用变量

时间:2011-08-27 17:47:20

标签: python django variables

在Django中,有没有办法通过使用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()

2 个答案:

答案 0 :(得分:3)

Gabi的答案正是你想要的。您可以使用setattr代替:

setattr(user, field_to_edit, strip_tags(value))

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

答案 1 :(得分:0)

您可以使用getattr功能:

getattr(user, field_to_edit) = strip_tags(value)