Ich habe ein Buchungsmodell, das prüfen muss, ob der ausgebuchte Artikel verfügbar ist. Ich hätte gerne die Logik dahinter, herauszufinden, ob das Objekt zentral verfügbar ist, so dass dieser Code unabhängig davon, wo ich die Instanz speichere, validiert, dass er gespeichert werden kann.Anzeigen von Ausnahmen für benutzerdefinierte Modellüberprüfung in der Django-Verwaltungssite
Im Moment habe ich diesen Code in einem benutzerdefinierten Speicherfunktion meiner Modellklasse:
def save(self):
if self.is_available(): # my custom check availability function
super(MyObj, self).save()
else:
# this is the bit I'm stuck with..
raise forms.ValidationError('Item already booked for those dates')
Dies funktioniert gut - der Fehler wird ausgelöst, wenn das Element nicht verfügbar ist, und mein Artikel wird nicht gespeichert. Ich kann die Ausnahme von meinem Frontend-Formularcode erfassen, aber was ist mit der Django-Verwaltungsseite? Wie kann ich meine Ausnahme wie jeden anderen Validierungsfehler auf der Verwaltungsseite anzeigen lassen?
Ich glaube, ich wollte an einem Ort zu schreiben, etwas, das, dass eine Instanz konnte nicht gespeichert werden sichergestellt, dass meine Validierungsregeln brach - Da die Speicherfunktion unabhängig davon aufgerufen wird, wo Sie speichern (Admin oder Frontend), ist es sinnvoll, sie dort anzulegen. –
Ja, aber ValidationError wird verwendet, um den Endbenutzer darüber zu informieren, dass die Informationen, die er in ein Formular eingibt, falsch sind. Wenn Sie sicherstellen müssen, dass einige Regeln eingehalten werden, sollten Sie vielleicht eine Assertion verwenden? Oder, wenn speichern kann einfach scheitern, als vielleicht sollten Sie einfach einen Return-Code, ob es richtig gespeichert wurde. Ich weiß nicht, was genau du brauchst. – gruszczy
Dieser Link antwortet ihm überhaupt nicht. Er möchte die Validierung in seinem Modell in Admin wiederverwenden. Nicht die Validierung in Admin neu zu implementieren ... – Cerin