Форма Django - могу ли я вернуть любые переменные при вызове ValidationError - PullRequest
0 голосов
/ 29 мая 2018

Я построил пользовательскую форму с несколькими пользовательскими полями (содержащими первичные ключи моих моделей), поэтому я не использую методы clean_ (), просто clean ().

Я получаю данные иесли поле не содержит определенных входных данных, я поднимаю ValidationError.Однако я не хотел бы, чтобы это полностью сбрасывало входные данные моей формы ... Есть ли способ "сохранить" состояние формы при отправке ... или вернуть значения, даже если вы вызываете ошибку проверки?

форма:

def clean(self):

    data = self.data
    my_data = data.getlist('my_data')

    ... use my_data to create pandas dataframe ...

    missing = df.loc[(
                      ((df['status'] == 'report') | (df['status'] == 'toconfirm')) &
                       (df['evidence'] == ''))]

    if not missing_evidence.empty:

        error_ids = missing_evidence['obj'].tolist()
        error_variants = [str(o) for o in error_ids]
        error_variants = "; ".join(error_variants)

        raise(forms.ValidationError(('%(value)s incorrect'),
                    params={'value': error_variants},
                ))
        ** here can I return dataframe, and re-set up my form? **

1 Ответ

0 голосов
/ 29 мая 2018

Да, вы можете вернуть тот же экземпляр формы в шаблон, и он будет содержать все отправленные данные

form = SomeForm(request.POST)
if form.is_valid():
    # Do sucess step tasks here
else:
    return render (request, template_name, {'form': form})

Теперь вы можете получить доступ к значению поля с помощью form.field.value в шаблоне, например

<input type='text' name='first_name' value='{{form.first_name.value}}'>
...