Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/01/2014, 14:53
Avatar de stormearth
stormearth
 
Fecha de Ingreso: octubre-2013
Ubicación: Quito
Mensajes: 68
Antigüedad: 10 años, 6 meses
Puntos: 2
validando un Email Field, extendiendo el UserCreationForm

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.

Última edición por stormearth; 24/01/2014 a las 14:59 Razón: no funcionan lo hyperlinks a youtube y a stackoverflow.