Reputation: 275
I am making a property management app where the user can fill out a rental application. I'm looking for a way to divide my form into sections like
Personal Information: item item item item Rental History: item item item item Employment item item item
My form
class ApplicantForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(ApplicantForm, self).__init__(*args, **kwargs)
self.fields['property'].queryset = Properties.objects.filter(is_active=True)
class Meta:
model = Applicant
fields = '__all__'
exclude = ['application_date']
widgets = {
'requested_move_in_date': DateInput(),
'dob': DateInput(),
'job_length': DateInput(),
}
labels = {
'requested_move_in_date': 'Requested Move in Date',
'dob': 'Date of Birth',
'ssn': "Social Security Number",
'job_length': "Job Start Date"
}
My template
{% load crispy_forms_tags %}
{% block content %}
<div class="jumbotron text-center">
Application page
</div>
<form class="post-form" method="POST">
{% csrf_token %}
{{ form|crispy }}
<button type="submit" class="save btn btn-primary">Submit</button>
</form>
{% endblock %}
Upvotes: 1
Views: 982
Reputation: 2834
You can use FormHelper()
from django-crispy-forms to override your form's layout. This is just an example, but you can change it for your purposes to make sections:
from crispy_forms.helper import FormHelper
class ApplicantForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
self.helper = FormHelper()
self.helper.layout = Layout(
Row(
Div('requested_move_in_date', css_class='col-12 col-md-4'),
Div('dob', css_class='col-12 col-md-4'),
Div('job_length', css_class='col-12 col-md-4'),
),
ButtonHolder(
Submit('submit', 'Сохранить'), css_class='form-btn-holder'
)
)
super(ApplicantForm, self).__init__(*args, **kwargs)
self.fields['property'].queryset = Properties.objects.filter(is_active=True)
class Meta:
model = Applicant
fields = '__all__'
exclude = ['application_date']
widgets = {
'requested_move_in_date': DateInput(),
'dob': DateInput(),
'job_length': DateInput(),
}
labels = {
'requested_move_in_date': 'Requested Move in Date',
'dob': 'Date of Birth',
'ssn': "Social Security Number",
'job_length': "Job Start Date"
}
Upvotes: 1