Django - Админ / Добавить запущенный model.clean, хотя поля отсутствуют - PullRequest
1 голос
/ 27 июня 2011

Хорошо, поэтому у меня есть такая модель:

class Airplane(models.Model):
    tail = models.ForeignKey(Tails)
    wheel = models.CharField(max_length=500,blank=True)
    window = models.CharField(max_length=500,blank=True)

    def clean(self):
        if self.tail and self.wheel and self.window:
            raise ValidationError("Can't have all three, choose tail and one more")

Теперь, если я пойду, чтобы добавить новую запись в самолете с помощью администратора Django.Если я оставляю оба поля пустыми и сохраняю, я получаю эту ошибку Django, указывающую на строку if self.tail and self.wheel.

DoesNotExist at /admin/MyProject/airplane/add/

Request Method:     POST
Request URL:    http://44.101.44.172:8001/admin/MyProject/airplane/add/
Django Version:     1.2.5
Exception Type:     DoesNotExist
Exception Value:    

Exception Location:     /usr/lib/python2.7/site-packages/django/db/models/fields/related.py in __get__, line 299
Python Executable:  /usr/bin/python
Python Version:     2.7.0

Разве Django не должен проверять, что обязательные поля заполнены перед запуском clean?В любом случае, как лучше всего решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 28 июня 2011

Хорошо, в качестве обходного пути я определил пользовательскую форму с моей проверкой в admin.py для этой модели.

Я до сих пор не понимаюпочему model.clean вызывается до того, как Джанго определил, что обязательные поля были заполнены. Хорошо.

0 голосов
/ 28 июня 2011

Ваше поле хвостов не принимает нулевые значения.Вам нужно будет добавить null=True, чтобы оно заработало.

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