J'essaie de valider qu'une URL soumise n'existe pas déjà dans la base de données.Problèmes soulevés par ValidationError sur un formulaire Django
Les parties pertinentes du look classe Form comme celui-ci:
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
Le problème est, quelle que soit la valeur que je soumets, je ne peux pas soulever la ValidationError
. Et si je fais quelque chose comme ça dans la méthode clean_url()
:
if Site.objects.get(domain=url):
raise forms.ValidationError("That URL is already in the database. Please submit a unique URL.")
j'obtiens une erreur DoesNotExist
, même pour les URL qui existent déjà dans la base de données. Des idées?
pas bon - L'erreur ne soit pas soulevée quand il le devrait. – saturdayplace
Vous avez d'autres problèmes, alors. Cela doit fonctionner. Exécutez-vous "manage.py testserver" et obtenez une nouvelle base de données vide chaque fois que vous exécutez? Courez-vous "manage.py runserver"? –
D'accord. Il y a de fortes chances que vos autres méthodes de validation soient en train de provoquer le chagrin. –