Django表单向导使用以前的表单验证(清除)表单 简言之,问题是:
我使用django来显示几个表单。是否有一种干净的方法可以使用先前表格(步骤XDjango表单向导使用以前的表单验证(清除)表单 简言之,问题是:,django,forms,validation,django-formwizard,Django,Forms,Validation,Django Formwizard,我使用django来显示几个表单。是否有一种干净的方法可以使用先前表格(步骤X
- 单个字段,
对表单子类调用clean
()方法,其中替换为表单字段属性的名称。此方法执行特定于该特定属性的任何清理,与它所属的字段类型无关 - 相同形式的多个字段 表单子类的clean()方法可以执行需要访问多个表单字段的验证
但是,我找不到任何地方可以使用前面步骤的所有数据验证当前步骤。我希望表单向导中有一个clean()方法。但是,我找不到它。可以通过以下方式实现:
def get_form_initial(self, step):
if step == '5':
step4 = self.get_cleaned_data_for_step('3')
res = super(DenovoPatternWizard, self).get_form_initial(step)
res['extendsequencedb'] = {}
res['extendsequencedb']['include_most_similar_pattern_sequences'] = step4['sequencepatternassignment'][
'number_sites_per_pattern']
return res
后一种形式的代码段:
def clean(self):
cleaned_data = super(InputDenovoPatternPatternForm, self).clean()
# compatibility of earlier and current step
if self.initial['timeseries_data'].number_timepoints != cleaned_data['pattern_data'].number_timepoints:
raise ValidationError("The time-series and pattern input files need to have the same number of timepoints (%d and %d respectively)." %
(self.initial['timeseries_data'].number_timepoints, cleaned_data['pattern_data'].number_timepoints))
快速而肮脏的解决方案:我现在正在覆盖向导的get_form_initial方法,并将上一个表单X的数据传递给下一个表单Y。然后我可以通过表单Y的self.initial字段访问数据。尽管看起来有点“肮脏”。