2

I'm working with Django 1.4 FormWizard (specifically, NamedUrlFormWizard)

first, the basics. i have a 3 step form wizard i'm building. The final outcome is along the lines of defining a template, and then choosing some people to use it, and then send them an email.

  • Step 1 - enter in basic template data (name, description, etc)
  • Step 2 - define a list of N fields, each with their own set of attributes but all identical in structure
  • Step 3 - choose one or more users to email, AND customize the contents of this email before saving

so far, in the form wizard:

  • Step 1 is a standard Form class, and works just fine.
  • Step 2 is a standard Formset class, and works just fine.
  • Step 3 is giving me some trouble. It needs to be a formset (list of email addresses), but also an additional form input field with email text. I can't figure out how to have both a formset in addition to a non-repeating form input on the same page inside of a form wizard.

in a perfect world, i could define a Formset as just another form field in a Form definition. ie:

class EmailAddressForm(forms.Form):
    email = forms.EmailField()

class EmailAddressesAndText(forms.Form):
    emailText = forms.Textarea()
    emailAddressFormSet = formset_factory(EmailAddressForm, etc etc)

then point my FormWizard page at 'EmailAddressesAndText' and be done with it. but its not a perfect world. Any ideas on how I can achieve such a thing?

IMFletcher
  • 656
  • 9
  • 19

1 Answers1

0

You can use get_form() method of WizardView to customize the form for particular step. Refer: WizardView.get_form. This answer can help you to add a field

Another option would be to add the field in formset and through JS disable and hide all instances other than first one.

Community
  • 1
  • 1
Rohan
  • 52,392
  • 12
  • 90
  • 87
  • The docs have moved (as well as the code) https://django-formwizard.readthedocs.io/en/latest/gettingstarted.html – boatcoder Sep 11 '17 at 04:08