Django 表单 - 我可以在引发验证错误时返回任何变量吗?



我构建了一个自定义表单,其中包含多个自定义字段(包含模型的主键(,所以我不使用 clean_(( 方法,只是 clean((。

我获取数据,如果字段不包含某些输入,我会引发验证错误。但是,我不希望这完全重置我的表单输入...有没有办法在提交时"保存"表单的状态......或者即使引发验证错误也返回值?

形式:

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? **

是的,您可以将相同的表单实例返回到模板,它将包含所有提交的数据

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}}'>

最新更新