Django: выполняется ли model_instance.clean () перед основными валидаторами? - PullRequest
1 голос
/ 26 января 2010

Допустим, у меня есть модель:

class Ticket(models.Model):
    client = models.ForeignKey(Client)
    color = models.CharField(max_length=255)

    def clean(self):
        self.color = self.client.favorite_color

Когда я запускаю это на последнем Django (глава SVN от 15 минут назад), если я нажимаю сохранить без выбора client, я получаю ошибку DoesNotExist изнутри моего метода очистки (для self.client.favorite_color часть). Поскольку для модели требуется атрибут client, разве это не должно обрабатываться до моей пользовательской проверки в clean()?

Вот документация, которую я читаю: http://docs.djangoproject.com/en/dev/ref/models/instances/#id1

Ответы [ 2 ]

1 голос
/ 27 января 2010

Я понял, если кто-нибудь столкнется с этой проблемой:

В full_clean () на модели сначала выполняется clean_fields (), но не отображаются ошибки для отображения и т. Д. Вместо этого они просто добавляются в dict () и затем clean (), который является методом пользовательской проверки для вашей модели запускается добавление любых ваших пользовательских ошибок в dict. Только после этого снова возникают ошибки.

0 голосов
/ 26 января 2010

clean() - это вызов ModelForms, а не моделей.

См. Документы.

Чтобы сделать то, что вы хотите сделать на уровне модели, переопределите метод save().

Редактировать после комментария: Что ж, похоже, пришло время перечитать документы заново с приближением 1.2. :-) Спасибо за указание на это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...