В зависимость форм и FormWizard внесена некоторая ясность. Однако не понятно, как теперь передать выбранное значение в следующую форму? На данный момент вторая форма выводится пустой.
forms.py
class MakeOfCar(forms.Form):
make = forms.ModelChoiceField(label = 'Make of your car', queryset = Make.objects.all(),)
class ModelFromMake(forms.Form):
car_model = forms.ModelChoiceField(label = 'Model of your car:', queryset = CarModel.objects.none(), required= False)
def __init__(self, make, *args, **kwargs):
super(ModelFromMake, self).__init__(*args, **kwargs)
self.fields['car_model'].queryset = CarModel.objects.filter(make = make)
class CarModelDetail(forms.Form):
body_type = forms.ModelChoiceField(queryset = Body.objects.none(), empty_label = None, required = False)
engine_type = forms.ModelChoiceField(queryset = Engine.objects.none(), empty_label = None, required = False)
gear_box_type = forms.ModelChoiceField(queryset = Transmission.objects.none(), empty_label = None, required = False)
year = forms.ModelChoiceField(queryset = Year.objects.none(), empty_label = None, required = False)
def __init__(self, car_model, *args, **kwargs):
super(CarModelDetail, self).__init__(*args, **kwargs)
self.fields['body_type'].queryset = Body.objects.filter(carmodel = car_model)
self.fields['engine_type'].queryset = Engine.objects.filter(carmodel = car_model)
self.fields['gear_box_type'].queryset = Transmission.objects.filter(carmodel = car_model)
self.fields['year'].queryset = Year.objects.filter(carmodel = car_model)
class AddlCarDetail(ModelForm):
class Meta:
model = Car
fields = ('color', 'mileage', 'img1', 'img2', 'img3', 'img4', 'img5')
class SellingWizard(FormWizard):
def done(self, request, form_list):
wizard_forms = [form.cleaned_data for form in form_list]
new_car = Car(make = wizard_forms.MakeOfCar['make'],
car_model = wizard_forms.ModelFromMake['car_model'],
body = wizard_forms.CarModelDetail['body_type'],
engine = wizard_forms.CarModelDetail['engine_type'],
transmission = wizard_forms.CarModelDetail['gear_box_type'],
year = wizard_forms.CarModelDetail['year'],
color = wizard_forms.AddlCarDetail['color'],
mileage = wizard_forms.AddlCarDetail['mileage'],
price = wizard_forms.AddlCarDetail['price'],
img1 = wizard_forms.AddlCarDetail['img1'],
img2 = wizard_forms.AddlCarDetail['img2'],
img3 = wizard_forms.AddlCarDetail['img3'],
img4 = wizard_forms.AddlCarDetail['img4'],
img5 = wizard_forms.AddlCarDetail['img5'] )
return HttpResponseRedirect('/thanks_for_sale/')
urls.py:
(r'^car_sale/$', forms.SellingWizard([MakeOfCar, ModelFromMake, CarModelDetail, AddlCarDetail])),
('^thanks_for_sale/$', direct_to_template, {'template':'thanks_for_sale.html'}),
Если есть более рациональные решения такой задачи или задача поставлена не корректно, буду очень благодарен за рекомендации.