Estoy tratando de validar que una URL enviada no existe en la base de datos.Problemas al generar un ValidationError en un formulario de Django
Las partes pertinentes de la clase Form aspecto como éste:
from django.contrib.sites.models import Site
class SignUpForm(forms.Form):
# ... Other fields ...
url = forms.URLField(label='URL for new site, eg: example.com')
def clean_url(self):
url = self.cleaned_data['url']
try:
a = Site.objects.get(domain=url)
except Site.DoesNotExist:
return url
else:
raise forms.ValidationError("That URL is already in the database. Please submit a unique URL.")
def clean(self):
# Other form cleaning stuff. I don't *think* this is causing the grief
El problema es que, independientemente de lo que el valor a mi juicio, no puede elevar el ValidationError
. Y si hago algo como esto en el método clean_url()
:
if Site.objects.get(domain=url):
raise forms.ValidationError("That URL is already in the database. Please submit a unique URL.")
cuando me siento un error DoesNotExist
, incluso para las direcciones URL que ya existen en la base de datos. ¿Algunas ideas?
no es bueno - El error no quede levantada cuando debe. – saturdayplace
Tienes otros problemas, entonces. Esto tiene que funcionar. ¿Estás ejecutando "manage.py testserver" y obteniendo una nueva base de datos vacía cada vez que corres? ¿Estás ejecutando "manage.py runserver"? –
De acuerdo. Existe una buena posibilidad de que sus otros métodos de validación _are_ "causen el dolor". –