Código Python:
Ver original
from django.contrib.auth.models import User class Profiles(models.Model): user = models.OneToOneField(User) url = models.URLField() avatar = models.ImageField(upload_to='profile_avatar') def __str__(self): return self.user.username
Después he creado un formulario que pida el email, url y avatar en un fichero 'forms.py':
Código Python:
Ver original
from django import forms from django.contrib.auth.forms import UserCreationForm class UserForm(UserCreationForm): email = forms.EmailField() url = forms.URLField() avatar = forms.ImageField()
Por último defino la clase SignIn que toma los valores del formulario y crea un usuario relacionado con el modelo Profiles:
Código Python:
Ver original
from django.views.generic import FormView from .forms import UserForm from django.core.urlresolvers import reverse_lazy from .models import Profiles from django.contrib.auth.models import User class SignIn(FormView): template_name = 'index/signin.html' form_class = UserForm success_url = reverse_lazy('signin') def form_valid(self, form): user = form.save() u = User.objects.get(username=str(user)) u.email = form.cleaned_data['email'] profile = Profiles() profile.user = user profile.url = form.cleaned_data['url'] profile.avatar = form.cleaned_data['avatar'] profile.save() return super(SignIn, self).form_valid(form)
Al ingresar los datos en el formulario sale el siguiente error: (1062, "Duplicate entry '' for key 'mail'")
Si elimino estas líneas de la vista, todo se crea correctamente pero no se asigna el campo email:
u = User.objects.get(username=str(user))
u.email = form.cleaned_data['email']
¿Cómo puedo ingresar el valor de "email" en el modelo User?
Gracias