/django-formlist

Use form list as one form in FormView

Primary LanguagePythonMIT LicenseMIT

django-formlist

Use form list as one form in FormView

I wrote this before i found a better solution. Please check bmispelon/django-multiform first

Next time I will need additional features, i will consider moving to bmispelon/django-multiform

Usage:

1 Define a FormsList object.

  from django import forms
  from formlist import FormsList
  
  class CollorSettingsForm(forms.Form)
    foo = forms.CharField()
  
  class UserSettingsForm(forms.Form)
    foo = forms.CharField()
    
  class OtherSettingsForm(forms.Form)
    foo = forms.CharField()

  class SettingsList(FormsList):
    forms_list = [
      CollorSettingsForm,
      UserSettingsForm,
      OtherSettingsForm
    ]

2 Use it in FormView

from django.views.generic.edit import FormView
from formlist import FormListViewMixin

class SettingsListView(FormListViewMixin, FormView):
  form_class = forms.SettingsList
  template_name = 'settings_list.html'

3 Use it inside tempalte

  <form action="/" method="post" enctype="multipart/form-data">
    {% set color_form = form.forms[0] %}
    {% set user_form = form.forms[1] %}
    {% set other_form = form.forms[1] %}
    <div class="form_content">
  	  <p>{{ _('Configure color') }}</p>
  		<div>
  			{{ color_form.foo }}
  		</div>
  		.....
  	</div>
  </form>