Entonces en forms.py declaro la nueva clase que voy a usar y la paso la clase UserCreationForm de django.contrib.auth.forms:
Código:
en mi views.py tengo mi funcion "registrar":from django import forms from django.contrib.auth.models import User from django.contrib.auth.forms import UserCreationForm class FormRegistroUsuario(UserCreationForm): email = forms.EmailField(required = True) class Meta: model = User fields = ('username', 'email', 'password1', 'password2') def save(self, commit = True): user = super(FormRegistroUsuario, self).save(commit=False) user.email = self.cleaned_data['email'] if commit: user.save() return user
Código:
Hasta ahi todo funciona bien. def registrar(request): if request.method == 'POST': form = FormRegistroUsuario(request.POST) if form.is_valid(): form.save() return HttpResponseRedirect(reverse('perfiles:registro_ok')) else: user_creation_form = FormRegistroUsuario() context = {'user_creation_form': user_creation_form} return render(request, 'perfiles/registrar.html', context)
Pero quisiera evitar que un usuario registre un email que ya esté registrado. No tengo mucha idea de cómo hacer esto. Intenté añadir "unique=True".
Código:
Pero me da un 'TypeError: __init__() got an unexpected keyword argument 'unique''. Entiendo que se trata de un FormField no de un ModelField entonces es lógico ese error. Pero no tengo mucha idea de hacia dónde avanzar. email = forms.EmailField(required = True, unique = True)