假设我有一步输入和下一步的另一个输入(我正在使用SessionWizardView)。我需要验证下一步输入与上一步的输入相同。如果输入与来自previos步骤的输入不一致,那么在移动时更新验证器以显示正确的错误会很棒,因为我使用的ajax验证在提交之前执行django表单验证器。
我想在第二步输入验证器中与ThreadLocal.get_current_request()进行会话并以某种方式进行比较。但我不认为这是一个很好的解决方案:)任何建议?
答案 0 :(得分:1)
我认为应该这样做:
class MyWizard(SessionWizardView):
def get_form_kwargs(self, step):
kwargs = {}
if step == 'second_step':
cleaned_data = self.get_cleaned_data_for_step('first_step')
kwargs.update({'first_input': cleaned_data['first_input'] })
return kwargs
然后以第二种形式
弹出它class SecondForm(forms.Form):
def __init__(self, *args, **kwargs):
self.first_input = kwargs.pop('first_input', None)
super(SecondForm, self).__init__(*args, **kwargs)
def clean(self):
super(SecondForm, self).clean()
if any(self.errors):
return
# compare self.first_input with self.cleaned_data['second_input']
return self.cleaned_data