Как переписать значения экземпляра / формы в чистом методе Django 2.0? - PullRequest
0 голосов
/ 16 ноября 2018

Как перезаписать значения экземпляра / формы в чистом методе Django 2.0?

Класс LocationForm (forms.ModelForm):

def clean(self):
    # do some work
    if check_condition:
        raise ValidationError
    # pass validation checks
    # overwrite new field value
    instance.field = new_val

Перезаписанное поле должно быть перезаписано и вступить в силув экземпляре новой модели.

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

Использование метода сохранения модели работает, но повышениеошибка проверки не приводит к появлению ошибок в форме в шаблоне django.

1 Ответ

0 голосов
/ 16 ноября 2018

Перезаписать метод clean и просто обновить cleaned_data.

def clean(self):
    self.cleaned_data = super().clean()
    self.cleaned_data['field'] = value
    return self.cleaned_data

Вы также можете добавить ошибки формы здесь. например, self.add_error('field', 'error message'), который поднимет для вас ValidationError и отобразит форму с ошибками.

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