5 Stimmen

Probleme beim Auslösen eines ValidationError in einem Django-Formular

Ich versuche zu überprüfen, ob eine eingegebene URL nicht bereits in der Datenbank vorhanden ist.

Die relevanten Teile der Klasse Form sehen wie folgt aus:

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

Das Problem ist, dass ich unabhängig davon, welchen Wert ich eingebe, den Wert nicht erhöhen kann. ValidationError . Und wenn ich so etwas in der clean_url() Methode:

if Site.objects.get(domain=url):
    raise forms.ValidationError("That URL is already in the database.  Please submit a unique URL.")

dann erhalte ich eine DoesNotExist Fehler, auch für URLs, die bereits in der Datenbank vorhanden sind. Irgendwelche Ideen?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X