使用表单向导创建不同的完成路径-Django
我一直在在线学习教程,但在尝试有条件地显示表单向导中的步骤时遇到了问题 views.py使用表单向导创建不同的完成路径-Django,django,django-forms,django-formwizard,Django,Django Forms,Django Formwizard,我一直在在线学习教程,但在尝试有条件地显示表单向导中的步骤时遇到了问题 views.py def silver_ad_selected(wizard): cleaned_data = wizard.get_cleaned_data_for_step('0') or {} return cleaned_data.get('ad_type') == '2' def platinum_ad_selected(wizard): cleaned_data
def silver_ad_selected(wizard):
cleaned_data = wizard.get_cleaned_data_for_step('0') or {}
return cleaned_data.get('ad_type') == '2'
def platinum_ad_selected(wizard):
cleaned_data = wizard.get_cleaned_data_for_step('0') or {}
return cleaned_data.get('ad_type') == '3'
class AddWizard(SessionWizardView):
def done(self, form_list, **kwargs):
return render_to_response('business/done.html', {
'form_data': [form.cleaned_data for form in form_list],
})
URL.py:
add_forms = [AddForm1, AddForm2, AddForm3]
urlpatterns = patterns('listings.views',
url(r'^addWizard/$', AddWizard.as_view(add_forms,
condition_dict = {
'2': silver_ad_selected or premium_ad_selected
})),
.......
forms.py
class AddForm1(forms.Form):
TYPE_CHOICES = (
('1','Basic'),
('2','Silver'),
('3','Platinum')
)
ad_type = forms.ChoiceField(choices=TYPE_CHOICES, widget=forms.RadioSelect)
class AddForm2(forms.Form):
category = forms.ModelChoiceField(queryset = Category.objects.all())
city = forms.ModelChoiceField(queryset = City.objects.all())
name = forms.CharField(max_length = 200)
address = forms.CharField(max_length = 200)
slogan = forms.CharField(max_length=140)
phone = forms.CharField(max_length=10)
website = forms.URLField()
email = forms.EmailField()
class AddForm3(AddForm2):
twitter = forms.CharField(max_length=100)
facebook = forms.URLField()
description = forms.CharField(widget=forms.Textarea)
基本上,我只想在用户选择“银”选项或“白金”选项(在步骤1中选择)时显示最后一步。现在,无论我选择什么,只显示前两个步骤/表格
我认为我的silver\u ad\u selected
和platinum\u ad\u selected
方法可能是问题所在,但我不确定
谢谢尝试更改您的URL.py:
add_forms = [AddForm1, AddForm2, AddForm3]
urlpatterns = patterns('listings.views',
url(r'^addWizard/$', AddWizard.as_view(add_forms,
condition_dict = {
'2': lambda wizard: wizard.silver_ad_selected() or wizard.premium_ad_selected()
})),
对问题是我传递的是一个布尔条件,而不是一个可调用函数,这正是lambda。谢谢