モデルでカスタム検証を実行しようとしていますが、混乱しています。具体的に申し上げます。私のコードが次のようであるとしましょう:
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)
さて、私がシェルからこのモデルで作業しているとき、私が呼び出すと:
f = Foo.objects.create_foo( "")
Fでsave()を呼び出す前に検証エラーが発生します。なぜこれが起こるのですか?検証エラーが発生するのは、f.save()を呼び出した後だけでしょうか?
注:カスタム定義のcreateメソッドではなく、objects.create()を使用した場合も同じことが起こります。 Djangoで検証がかなりイライラするようになっているので、どんな助けでも大歓迎です。
create()
は自動的に保存されるため、エラーを修正した場合でも、作成する引数がデータベースの要件を満たし、レコードを保存することを確認する必要があります。
マネージャーにself
を入れるのを忘れた
class FooManager(models.Manager):
def create_foo(self, name):
return self.create(foo_name = name)