Sto provando a eseguire alcune convalide personalizzate su un modello e mi sto confondendo. Lasciami essere specifico. Diciamo che il mio codice è il seguente:È save() chiamato implicitamente quando si chiama create in django?
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)
Ora, quando sto lavorando con questo modello dal guscio, se chiamo:
f = Foo.objects.create_foo ("")
Si alzerà un errore di convalida prima di avere la possibilità t o chiama save() su f. Perché succede? Non dovrebbe essere sollevato l'errore di convalida solo quando chiamo f.save()?
Nota: la stessa cosa accade se utilizzo object.create() in opposizione al metodo di creazione definito dall'utente. Qualsiasi aiuto sarebbe molto apprezzato, poiché trovo che le convalide nel django siano piuttosto frustranti.
No, mi dispiace che sia stata colpa del mio povero esempio. Nel mio codice vero mi metto auto nel manager. Dovrei mettere il mio codice effettivo, sarà d'aiuto? – innospark