hola todos, he extendido el UserCreationForm conforme he aprendido en
este post de stackoverflow y en
este tutorial de django en youtube.
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:
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
en mi views.py tengo mi funcion "registrar":
Código:
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)
Hasta ahi todo funciona bien.
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:
email = forms.EmailField(required = True, unique = True)
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.