Al 26/05/12 22:22, En/na Paul Cumba ha escrit:
> Si tienes razon el queryset se lo debe de utilizar con el exists(), fue
> un error mio.
No dije que fuese un error.
> Pero el metodo clean donde seria logico implementarlo en
> el modelo o en el formulario..???
Yo creo que las validaciones que garantizan la consistencia de los datos
que hay en la base de datos deber�an centralizarse en los modelos. Otra
cosa distinta seria un formulario en el que entras los par�metros de un
informe por ejemplo, al no estar ligado a la creaci�n/modificaci�n de un
modelo las validaciones ir�an en el formulario.
Los ModelForm te facilitan mucho la vida haciendo todo esto y son muy
configurables. Supongo que tendr�s tus motivos para utilizar un Form en
lugar de un ModelForm.
Si utilizas un Form deber�as leer:
https://docs.djangoproject.com/en/1.4/ref/models/instances/
seg�n lo que all� se explica puedes a�adir a tu formulario un m�todo tipo:
# esto es pseudo c�digo, hay que pulir algunos detalles
def clean(self) :
cleaned_data = super(MyForm, self).clean()
modelo = MyModel(**cleaned_data)
try:
modelo.full_clean()
except ValidationError, e:
self.actualizar_errores(e, cleaned_data)
return cleaned_data
La idea es delegar la validaci�n en el modelo y capturar los errores
a�adi�ndolos a la lista de errores de cada campo. El m�todo
"actualizar_errores" es el responsable de asociar los errores del modelo
a errores de campos del formulario y de borrar los �tems de cleaned_data
que no han superado la validaci�n.
Esto viene a ser mas o menos lo que hacen los ModelForm, as� que �por
qu� reinventar la rueda?
Saludos