Используйте переменные при сохранении объектов в Django - PullRequest
3 голосов
/ 27 августа 2011

В 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 ]

3 голосов
/ 27 августа 2011

Габи ответит именно то, что вы хотите.Вместо этого вы можете использовать setattr:

setattr(user, field_to_edit, strip_tags(value))

Что (очень, очень немного!) Более интуитивно понятно.

0 голосов
/ 27 августа 2011

Вы можете использовать функцию getattr:

getattr(user, field_to_edit) = strip_tags(value)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...