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:
en forms.py tengo un form que sera usado para editar el User.class Perfiles(models.Model): usuario = models.OneToOneField(User, null = True) descripcion = models.CharField(max_length=250, blank=True, null=True) ...
Código:
en views.py tengo una funcion que se encargaría (si funcionara) de editar el User:from django.contrib.auth.models import User class UserForm(forms.ModelForm): class Meta: model = User fields = ('email', 'first_name', 'last_name')
Código:
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!)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)
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.