jazzband / django-formtools

A set of high-level abstractions for Django forms
https://django-formtools.readthedocs.io
BSD 3-Clause "New" or "Revised" License
794 stars 135 forks source link

Working with django-crispy-forms #177

Closed nikolas-dev closed 3 years ago

nikolas-dev commented 3 years ago

Forms.py

class FormStepOne(forms.Form):
    photo = forms.ImageField()
    name = forms.CharField(max_length=100)
    email = forms.EmailField()

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        for fieldname in self.fields:
            self.fields[fieldname].help_text = None
            # self.fields[fieldname].widget.attrs['placeholder'] = self.fields[fieldname].label

        self.helper = FormHelper()
        # self.helper.form_show_labels = False
        self.helper.layout = Layout(
            Row(
                Column(
                    Field('photo', template='layout/fields/image_thumbnail.html')
                )
            ),
            Row(
                Column('name', css_class='form-group col-md-6 mb-0'),
                Column('email', css_class='form-group col-md-6 mb-0'),
            ),
            Row(
                Column(
                    Submit('submit', 'Submit'), css_class='kt-login__actions'
                ),
            )
        )

class FormStepTwo(forms.Form):
    job = forms.CharField(max_length=100)
    salary = forms.CharField(max_length=100)
    job_description = forms.CharField(widget=forms.Textarea)

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        for fieldname in self.fields:
            self.fields[fieldname].help_text = None
            # self.fields[fieldname].widget.attrs['placeholder'] = self.fields[fieldname].label

        self.helper = FormHelper()
        # self.helper.form_show_labels = False
        self.helper.layout = Layout(
            Row(
                Column('job', css_class='form-group col-md-6 mb-0'),
                Column('salary', css_class='form-group col-md-6 mb-0'),
            ),
            Row(
                Column('job_description', css_class='form-group col-md-12 mb-0'),
            ),
            Row(
                Column(
                    Submit('submit', 'Submit'), css_class='kt-login__actions'
                ),
            )
        )

Views.py

class FormWizardView(SessionWizardView):
    file_storage = DefaultStorage()
    template_name = "registration.html"
    form_list = [forms.FormStepOne, forms.FormStepTwo]

    def done(self, form_list, **kwargs):
        return render(self.request, 'done.html', {
            'form_data': [form.cleaned_data for form in form_list],
        })

urls.py path('add/', views.FormWizardView.as_view(), name='user_add')

Two issues:

  1. ImageUpload not working, though file given but shows its required
  2. FormHelper from crispyform is not working
  3. Step by Step data is not saving