Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Editar User data en django usando forms. Comportamiento extraño.

Estas en el tema de Editar User data en django usando forms. Comportamiento extraño. en el foro de Python en Foros del Web. Hola todos. Les agradecería su ayuda puesto que he pasado horas en este error: en models.py tengo 1 model que se llama "Perfiles" y es ...
  #1 (permalink)  
Antiguo 29/01/2014, 18:06
Avatar de stormearth  
Fecha de Ingreso: octubre-2013
Ubicación: Quito
Mensajes: 68
Antigüedad: 10 años, 5 meses
Puntos: 2
Editar User data en django usando forms. Comportamiento extraño.

Hola todos. Les agradecería su ayuda puesto que he pasado horas en este error:
en models.py tengo 1 model que se llama "Perfiles" y es un One-to-One field con el model User de django contrib.auth.

Código:
class Perfiles(models.Model):
	usuario = models.OneToOneField(User, null = True)
	descripcion = models.CharField(max_length=250, blank=True, null=True)
...
en forms.py tengo un form que sera usado para editar el User.

Código:
from django.contrib.auth.models import User
class UserForm(forms.ModelForm):
	class Meta:
		model = User
		fields = ('email', 'first_name', 'last_name')
en views.py tengo una funcion que se encargaría (si funcionara) de editar el User:

Código:
def editar_perfil_info(request):
	if request.method == "POST":
		form = UserForm(request.POST)
		if form.is_valid():
			obj = User.objects.get(usuario=request.user)
			if 'email' in form.cleaned_data:
				obj.email = form.cleaned_data['email']
			if 'first_name' in form.cleaned_data:
				obj.first_name = form.cleaned_data['first_name']
			if 'last_name' in form.cleaned_data:
				obj.first_name = form.cleaned_data['last_name']
			obj.save()
			return HttpResponseRedirect(reverse('perfiles:perfil_propio'))
		else:
			pass #!!! enviar errores	
	else:
		perfil_info_form = UserForm()
	context = {'perfil_info_form': perfil_info_form}
	return render(request, 'perfiles/editar_perfil_info.html', context)
Como pueden ver me falta enviar los errores en caso de que el form_is_valid() no pase. El tema es que me he quedado estancado porque cuando corro el runserver y lleno este form no solo no funciona, SI NO QUE TAMBIEN BORRA TODO LO QUE ESE USER TIENE GUARDADO EN LA TABLA PERFILES (la de arriba, que no tiene nada que ver con este form!)

en el html de perfiles/editar_perfil_info.html tengo un form común:

Código:
<p>Edita tus datos {{user.username}}</p>
<form action = "/perfiles/editar_perfil_des/" method = "post">
	{% csrf_token %}
	<ul>
		{{perfil_info_form.as_ul}}
	</ul>
	<input type = "submit" name = "submit" value = "Guardar">
</form>

Este es el tipo de errores que le dan ganas a uno de tomar una botella de ron y desistir.
Espero que me puedan ayudar.
  #2 (permalink)  
Antiguo 29/01/2014, 18:36
Avatar de stormearth  
Fecha de Ingreso: octubre-2013
Ubicación: Quito
Mensajes: 68
Antigüedad: 10 años, 5 meses
Puntos: 2
Respuesta: Editar User data en django usando forms. Comportamiento extraño.

Disculpen todos. En verdad si me tomó horas este error pero es que no me di cuenta que el "form action" apunta al def editar_perfil_des y no al editar_perfil_info. Espero no haberles echo perder el tiempo a ninguno de ustedes.
  #3 (permalink)  
Antiguo 02/02/2014, 10:00
 
Fecha de Ingreso: mayo-2012
Ubicación: Mexico
Mensajes: 82
Antigüedad: 11 años, 10 meses
Puntos: 7
Respuesta: Editar User data en django usando forms. Comportamiento extraño.

Hola,

Era muy dificil poder ayudarte, la proxima pones el error completo el que te sale.

Etiquetas: django, form
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:31.