Подтвердить что ты не робот

Является ли save() неявным образом при вызове create в 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)

Теперь, когда я работаю с этой моделью из оболочки, если я вызываю:

  

f = Foo.objects.create_foo ("")

  

Он поднимет ошибку проверки, прежде чем я получу возможность вызвать save() на f. Почему это происходит? Не следует ли поднимать ошибку проверки только после вызова f.save()?

Примечание. То же самое происходит, если я использую objects.create() в отличие от настраиваемого метода создания. Любая помощь будет принята с благодарностью, поскольку я считаю, что проверки в джанго довольно расстраивают.

4b9b3361

Ответ 1

create() автоматически сохранит, поэтому, даже если вы исправите свою ошибку, вам все равно придется убедиться, что аргументы для создания выполняют требования к базе данных для сохранения запись.

Ответ 2

Вы забыли поставить self в своем менеджере

class FooManager(models.Manager):
    def create_foo(self, name):
        return self.create(foo_name = name)