Ich versuche, eine benutzerdefinierte Validierung für ein Modell durchzuführen, und ich bin verwirrt. Lass mich konkret sein. Lassen Sie uns sagen, dass mein Code wie folgt:Wird save() implizit aufgerufen, wenn create in django aufgerufen wird?
class FooManager(models.Manager):
def create_foo(self, name):
return self.create(foo_name = name)
class Foo(models.Model):
foo_name = models.CharField(max_length=30)
objects = FooManager()
def clean(self):
...
def save(self, *args, **kwargs):
self.full_clean()
super(User, self).save(*args, **kwargs)
Nun, wenn ich mit diesem Modell aus der Shell arbeite, wenn ich rufe:
f = Foo.objects.create_foo ("")
Es wird ein Validierungsfehler erhöhen, bevor ich eine Chance t erhalten o rufe save() auf f auf. Warum passiert das? Sollte der Validierungsfehler nicht erst ausgelöst werden, wenn ich f.save() aufruft?
Hinweis: Das gleiche passiert, wenn ich objects.create() im Gegensatz zu den benutzerdefinierten create-Methode verwenden. Jede Hilfe würde sehr geschätzt werden, denn ich finde Validierungen im Django ziemlich frustrierend.
Nein, tut mir leid, das war die Schuld meines schlechten Beispiels. In meinem eigentlichen Code stelle ich mich selbst in den Manager. Soll ich meinen tatsächlichen Code aufstellen, wird das helfen? – innospark