0
온라인 튜토리얼을 따라했지만 폼 마법사에서 단계를 조건부로 표시하려고 할 때 막혔습니다.폼 마법사를 사용하여 다른 완료 경로 만들기 - Django
views.py urls.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 = 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],
})
:
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 단계에서 선택한 "실버"옵션 또는 "플래티넘"옵션. 현재, 내가 선택한 항목과 상관없이 처음 두 단계/양식 만 s가 표시됩니다.
내 silver_ad_selected
및 platinum_ad_selected
방법이 문제 일 수 있다고 생각하지만 확실하지 않습니다.
주셔서 감사합니다 urls.py를 변경
예. 문제는 호출 가능한 함수 대신 부울 조건을 전달한다는 것이 었습니다.이 함수는 람다가 무엇인지 정확하게 나타냅니다. 고마워. – AlexBrand