Как определить валидацию для поля модели и корректно обработать ошибку? - PullRequest
0 голосов
/ 27 мая 2019
Django 1.6

Я уже просмотрел документы, обсуждения StackOverflow и git.Тем не менее, у меня есть несколько сомнений.

1- Если я определяю валидатор в поле модели, имеет ли значение то, что я использую в форме, например forms.form или forms.ModelForm?
2- Что если явалидация в методе очистки модели, тогда как мне оттуда исправить ошибку валидации (в основном, чтобы показать шаблон)?Обычно я получаю сообщение об ошибке на сервере 500.
3 - Влияет ли ошибка с помощью средства проверки поля модели на сериализатор DRF или будет отображаться сообщение об ошибке?
4 - Если обязательно использовать forms.ModelForm, то какЯ могу добиться аналогичной функциональности при использовании forms.form?

Сейчас я использую forms.form для формы и для поля модели. Я сделал следующее.

def validate_name(value, message=None, code=None,):
    """
    Validation ensures a value consists of only letters, space and dot.
    """
    reg = re.compile("^[\\p{L} .]+$")
    if not reg.match(value):
        raise ValidationError(message or _("Invalid - Allowed characters: a-z, A-Z, space, dot."), code=code or 'invalid_name')

Поле модели

first_name = models.CharField(_('first name'), max_length=200, blank=True, validators=[validate_name])

Прямо сейчас, чтобы выполнить validate_name, мне нужно позвонить full_clean() и в итоге получить 500 ошибок сервера.

Любой лучший способ или предложение для достижения глобальной проверки дляМодель ценится.

...