def user_info(request, template_name='social/retrieve_user_data.html', username=None): user = User.objects.get(username=username) if request.method == 'POST': form = UserInfoForm(request.POST, user) print(form.is_valid()) if form.is_valid(): form.save() else: print('not post') form = UserInfoForm(user) return render_to_response(template_name, RequestContext(request, { 'form': form, })) class UserInfoForm(forms.Form): def __init__(self,*args,**kwargs): self.user = kwargs.pop('user') super(UserInfoForm,self).__init__(*args,**kwargs)Esto está produciendo un KeyError con valor de excepción u'user'. ¿Que esta mal aquí? En ambos casos, el formulario se inicializa con un valor válido de usuario. ¿Por qué recibo un error de clave>
No está pasando al usuario como un argumento de palabra clave en el bloque if o else. Debería ser:
form = UserInfoForm(request.POST, user=user)y:
form = UserInfoForm(user=user)¡Solo func(foo=bar) puede poner {"foo":bar} en el diccionario de kwargs ! De acuerdo con su form = UserInfoForm(request.POST, user) , puede usar self.user = args[1] para capturar user .