3 votes

Utiliser des variables lors de l'enregistrement d'objets dans Django

Dans Django, existe-t-il un moyen d'identifier l'attribut d'un objet que je souhaite modifier en utilisant une variable POST/GET au lieu de le nommer explicitement ?

Par exemple, je veux faire ceci :

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

au lieu de cela :

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

3voto

Sam Points 3067

La réponse de Gabi est exactement ce que vous voulez. Vous pouvez utiliser setattr à la place :

setattr(user, field_to_edit, strip_tags(value))

Ce qui est (très très légèrement !) plus intuitif.

0voto

Gabi Purcaru Points 15158

Vous pouvez utiliser le getattr fonction :

getattr(user, field_to_edit) = strip_tags(value)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X