Help!!! I’m lost on this error: while trying to submit this form and pass it content as a context:
I see that the indentation of my view is correct as well as the definitions of my form
View
def costm_questions(request):
if request.method == 'POST':
form = labor_questions(request.POST)
if form.is_valid():
cost_dict= dict()
cost_dict['Union_PWR']= form.cleaned_data['Union_PWR']
cost_dict['UnionLabor_area']= form.cleaned_data['UnionLabor_area']
cost_dict['After_Hours_Req']= form.cleaned_data['After_Hours_Req']
cost_dict['infectious_control_Req']=form.cleaned_data['infectious_control_Req']
cost_dict['No_Core_Drills']= form.cleaned_data['No_Core_Drills']
cost_dict['Armored_fiber_req']= form.cleaned_data['Armored_fiber_req']
cost_dict['cost_dict']= cost_dict
context = {
'cost_dict': cost_dict,
}
return render(request, 'building_form.html', context)
else:
form = labor_questions()`enter code here`
return render(request, 'cost_questions_form.html', {'form': form})
Forms
class labor_questions(forms.Form):
BOOL_CHOICES = ((True, 'Yes'), (False, 'No'))
LABOR_AREA_CHOICES= ((1, '1) Chicago'), (2 ,'2) Manhattan'), (3 ,'3) NYC Metro'), (4 ,'4) Los
Angeles'),
(4 ,'5) San Francisco'), (5 ,'6) Philadelphia'), (5 ,'6) Other'))
AFTER_HOURS_CHOICES= ((1, '1) No'), (2, '2) Yes, Mon-Fri'), (3,'3) Yes, weekends only'))
Union_PWR = forms.ChoiceField(choices = BOOL_CHOICES, label="Is Union Labor or Prevailing Wage Required?",
initial='', widget=forms.Select(), required=True) #Is Union Labor or Prevailing Wage Required?
UnionLabor_area= forms.ChoiceField(choices = LABOR_AREA_CHOICES, label="if yes please choose union area",
initial='', widget=forms.Select(), required=True)
After_Hours_Req= forms.ChoiceField(choices = AFTER_HOURS_CHOICES, label="Is after-hours work required?",
initial='', widget=forms.Select(), required=True)
infectious_control_Req= forms.ChoiceField(choices = BOOL_CHOICES, label="Is tenting required for infectious control?",
initial='', widget=forms.Select(), required=True)
No_Core_Drills = forms.IntegerField(label='How many core drills will be required?', required=True)
Armored_fiber_req= forms.ChoiceField(choices = BOOL_CHOICES, label="Is armored fiber cabling required?",
initial='', widget=forms.Select(), required=True)
My html code is calling for crispy but I see the format are correct
html
{% extends 'base.html' %}
{% load crispy_forms_tags %}
{% block title %}Cost Questions form{% endblock %}
{% block body %}
<br>
<div class="container">
<form method="POST" action = {% url 'cost_info' %}>
{% csrf_token %}
{{ form.non_field_errors }}
<div class="container">
<div>
<div class="card w-100">
<div class="card-header"><h6>Project Cost Questions</h6></div>
<div class="card-body">
<div class="row">
<div class="col">{{ form.Union_PWR|as_crispy_field }}</div>
<div class="col">{{ form.UnionLabor_area|as_crispy_field }}</div>
</div>
</div>
<div class="card-body">
<div class="row">
<div class="col">{{form.After_Hours_Req|as_crispy_field}}</div>
</div>
</div>
<div class="card-body">
<div class="row">
<div class="col">{{form.infectious_control_Req|as_crispy_field}}</div>
</div>
</div>
<div class="card-body">
<div class="row">
<div class="col">{{form.No_Core_Drills|as_crispy_field}}</div>
</div>
</div>
<div class="card-body">
<div class="row">
<div class="col">{{form.Armored_fiber_req|as_crispy_field}}</div>
</div>
</div>
</div>
</div>
</div>
<button type="submit" name="CostInfo" class="btn btn-secondary">Submit</button>
<br/>
</div>
</form>
</div>
{% endblock %}