DjangoAdmin: Problem mit clean-Methode
Verfasst: Donnerstag 25. Juni 2009, 12:02
Hallo zusammen,
folgendes Problem ist mir gerade in Django bzw. bei der Verarbeitung von im DjangoAdmin eingegebenen Daten untergekommen.
Ich habe ein ein models.DecimalField, was optional angegeben werden kann (blank=True, null=True). In meiner Verarbeitung der Daten prüfe ich, ob das Feld gesetzt ist.
Gibt jetzt ein User aus Versehen dort keine Zahl ein erhalte ich einen KeyError.
Dieser Fehler tritt eigentlich nur auf, wenn ich meine eigene Datenverarbeitung aufrufe.
Ansonsten kommt von Django eine ganz normale Fehlermeldung, dass man doch bitte eine Zahl eingeben möchte.
Also kommt meine Datenverarbeitung wohl noch bevor die djangoeigene clean-Methode darüberläuft. Meine Datenvrarbeitung wird nämlich in meiner eigenen clean-Methode aufgerufen, da ich hier bei Fehlern eigene ValidationErrors im Admin ausgeben kann.
Das realisiere ich so:
Die einfachste Lösung wäre sicher die Datenverarbeitung aus der clean-Methode rauszuhalten. Aber dann kann ich leider keine Validationerrors mehr im DjangoAdmin ausgeben. Gibt es nicht eine Möglichkeit vielleicht eine super clean Methode vor meiner Datenverarbeitung aufzurufen oder so ähnlich!?
folgendes Problem ist mir gerade in Django bzw. bei der Verarbeitung von im DjangoAdmin eingegebenen Daten untergekommen.
Ich habe ein ein models.DecimalField, was optional angegeben werden kann (blank=True, null=True). In meiner Verarbeitung der Daten prüfe ich, ob das Feld gesetzt ist.
Gibt jetzt ein User aus Versehen dort keine Zahl ein erhalte ich einen KeyError.
Dieser Fehler tritt eigentlich nur auf, wenn ich meine eigene Datenverarbeitung aufrufe.
Ansonsten kommt von Django eine ganz normale Fehlermeldung, dass man doch bitte eine Zahl eingeben möchte.
Also kommt meine Datenverarbeitung wohl noch bevor die djangoeigene clean-Methode darüberläuft. Meine Datenvrarbeitung wird nämlich in meiner eigenen clean-Methode aufgerufen, da ich hier bei Fehlern eigene ValidationErrors im Admin ausgeben kann.
Das realisiere ich so:
Code: Alles auswählen
def clean(self):
...
export = IS24Export(self.cleaned_data)
...
return self.cleaned_data