J'essaie d'effectuer une validation personnalisée sur un modèle et je suis confus. Laissez-moi être précis. Disons que mon code est le suivant:
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)
Maintenant, quand je travaille avec ce modèle du Shell, si j'appelle:
f = Foo.objects.create_foo ("")
Cela provoquera une erreur de validation avant que j'aie la possibilité d'appeler save () sur f. Pourquoi cela arrive-t-il? L'erreur de validation ne devrait-elle pas être déclenchée uniquement lorsque j'appelle f.save ()?
Remarque: la même chose se produit si j'utilise objects.create () par opposition à la méthode de création personnalisée définie. Toute aide serait grandement appréciée, car je trouve que les validations dans Django sont assez frustrantes.
create()
sera automatiquement sauvegardé, donc même si vous corrigez votre erreur - vous devrez toujours vous assurer que les arguments à créer satisfont aux exigences de la base de données pour sauvegarder un enregistrement.
Vous avez oublié de mettre self
dans votre gestionnaire
class FooManager(models.Manager):
def create_foo(self, name):
return self.create(foo_name = name)