Ответ 1
create()
автоматически сохранит, поэтому, даже если вы исправите свою ошибку, вам все равно придется убедиться, что аргументы для создания выполняют требования к базе данных для сохранения запись.
Я пытаюсь выполнить некоторую выборочную проверку на модели, и я запутался. Позвольте мне быть конкретным. Скажем, мой код выглядит следующим образом:
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() в отличие от настраиваемого метода создания. Любая помощь будет принята с благодарностью, поскольку я считаю, что проверки в джанго довольно расстраивают.
create()
автоматически сохранит, поэтому, даже если вы исправите свою ошибку, вам все равно придется убедиться, что аргументы для создания выполняют требования к базе данных для сохранения запись.
Вы забыли поставить self
в своем менеджере
class FooManager(models.Manager):
def create_foo(self, name):
return self.create(foo_name = name)