Как я могу заполнить информацию для формы, основанной на предыдущей форме? - PullRequest
3 голосов
/ 11 сентября 2011

Пользователь отправляет форму один.

Форма 1 используется как начальная информация для формы 2 form_factory

Использование мастера форм django после 3 часов попыток уговорить стандартный Django 1.3 использовать фабрику форм.

Я пытаюсь выяснить, как получить эту информацию. У меня есть информация - я просто не знаю, где ее наклеить. (О, у меня есть идеи ..)

- urls.py -

url(r'homes/bulk/$', 
   BulkHomeWizard.as_view([('home_0', BulkUploadFormOne), 
                           ('home_1', formset_factory(BulkUploadFormTwo, extra=1))])

- views.py -

класс BulkHomeWizard (SessionWizardView):

def get_context_data(self, form, **kwargs):
    context = super(BulkHomeWizard, self).get_context_data(form, **kwargs)
    self.template_name = 'axis/bulk_%s.html' %  self.steps.current
    if self.steps.current == 'home_1':
        data = self.get_cleaned_data_for_step('home_0')
        # OK I have the data.. Now I thought I could simply pass the form back in....
        HomeFormSet = formset_factory(BulkUploadFormTwo, extra=0)
        form = HomeFormSet(initial=data['homes'])

        context.update({'form': form})
    return context

Если кто-нибудь знает этих новых волшебников форм, не могли бы вы дать мне еще раз. Я уверен, что это просто ...

Ответы [ 2 ]

4 голосов
/ 22 декабря 2011

Существует бэкпорт мастеров Django 1.4 для более старой версии Django:

https://github.com/stephrdev/django-formwizard

Вы должны использовать это вместо мастера Django 1.3, который устарел в 1.4. Ваш порт в Django 1.4 будет проще.

Вы можете подготовить свой порт к Django 1.4 следующим образом:

try:
    # Django 1.4
    from django.contrib.formtools.wizard.views import SessionWizardView
except ImportError:
    # For older django version use formwizard backport
    from formwizard.views import SessionWizardView
2 голосов
/ 19 октября 2011

Ключ - SessionWizardView ... Он находится в ветке разработки Django и не будет выпущен до 1.4.Конечно, вы можете скачать ветку разработки и использовать SessionWizardView, но это не рекомендуется для производственного кода!

Более старая версия мастера форм для 1.3 - , документированная здесь .Он делает намного меньше (отсюда и новая версия) и в основном передает все как скрытые поля.

...