假设我在一个步骤中有一个输入,在下一步有另一个输入(我正在使用 SessionWizardView)。我需要验证下一步输入是否与上一步的输入相同。如果输入与来自 previos 步骤的输入不同,那么在旅途中更新验证器以显示正确的错误会很棒,因为我使用的是在提交之前执行 django 表单验证器的 ajax 验证。
我想过在第二步输入验证器中与 ThreadLocal.get_current_request() 进行会话并以某种方式进行比较。但我认为这不是一个好的解决方案:) 有什么建议吗?
假设我在一个步骤中有一个输入,在下一步有另一个输入(我正在使用 SessionWizardView)。我需要验证下一步输入是否与上一步的输入相同。如果输入与来自 previos 步骤的输入不同,那么在旅途中更新验证器以显示正确的错误会很棒,因为我使用的是在提交之前执行 django 表单验证器的 ajax 验证。
我想过在第二步输入验证器中与 ThreadLocal.get_current_request() 进行会话并以某种方式进行比较。但我认为这不是一个好的解决方案:) 有什么建议吗?
我认为应该这样做:
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