我遇到的问题是如何在表单中显示一些其他文本, 特别是上一步的值。关键是要向用户显示一条消息,例如“您已选择{{value_from_step_0}}作为入门者,现在选择主要课程。”
我可以从步骤0获得该值,如下所示:
class MenuWizard(SessionWizardView):
def get_form_kwargs(self, step=None):
kwargs = {}
if step == '1':
starter = self.get_cleaned_data_for_step('0')['starter']
kwargs.update({'starter': starter})
class MainCourseForm(forms.Form):
def __init__(self, *args, **kwargs):
starter = kwargs.pop('starter')
print "{0} chosen".format(starter) # This works
super(DomainForm, self).__init__(*args, **kwargs)
# What next?
如果我没有弹出'starter'值,则超级调用失败。但是,我怎样才能将这个价值纳入相关模板?大概我需要在 init 中做一些事情或者覆盖别的东西,但是什么?
答案 0 :(得分:2)
首先,请注意1.7不受支持,表单向导已从1.8中的Django中删除,现在位于第三方formtools库中。
这不是表单的工作,而是视图。 SessionWizardView是一个标准的基于类的视图,与大多数基于类的视图一样,它允许您覆盖get_context_data
以向模板内容添加元素。请参阅the documentation,其中有一个使用self.steps.current
检查当前步骤名称的示例。