Как правильно использовать Django форму вместе с набором форм?

Здраствуйте, я хочу создать форму в которой есть числовое поле, в зависимости от значения числового поля к форме прибавляются дополнительные поля. Решил я реализовывать это путем создания двух форм, одна форма это числовое значение, а вторая это набор форм которые добавляются в зависимости от значения поля в первой форме.
Вот пример моего forms.py
class HotelForm(forms.Form):
        rooms = forms.IntegerField(label=(u'Количество номеров'), min_value=1, initial=1)

class TouristsForm(forms.Form):
        adult = forms.IntegerField(label=(u''), min_value=1, initial=1)
        children = forms.IntegerField(label=(u''), min_value=1, required=False)

views.py
def bookingForm(request):
        TouristsFormSet = formset_factory(TouristsForm)
        if request.method == 'POST':
                booking_form = HotelForm(request.POST, prefix='booking_form')
                tourists_formset = TouristsFormSet(request.POST, prefix='tourists')
                if booking_form.is_valid() and tourists_formset.is_valid():
                        rooms = form.cleaned_data['rooms']

                        for i in range(0, tourists_formset.total_form_count()):
                                tourists_form = tourists_formset.forms[i]
                                print tourists_form.cleaned_data

                        ...
        else:
                booking_form = HotelForm()
                tourists_formset = TouristsFormSet(prefix='tourists')
        return render(request, 'booking/booking.html', { 'booking_form' : booking_form, 'tourists_formset' : tourists_formset,' })

При заполнении формы в шаблоне и отправки данных мне сообщается что каждое поле обязательно, хотя я все поля правильно заполнил. Я так понимаю что это из-за того, что я не правильно использую is_valid метод. Помогите мне пожалуйста разобраться. Заранее спасибо.
  • Вопрос задан
  • 289 просмотров
Пригласить эксперта
Ответы на вопрос 1
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы