【发布时间】:2015-11-04 21:51:02
【问题描述】:
我有一个报告表格report.html:
<select id="select" class="form-control" name="organization">
<option value="">-- Select Organization --</option>
{% for organization in organization_list %}
<option value="{{ organization.name }}">{{ organization.name }}</option>
{% endfor %}
</select>
提交此表单后,所选组织未保存。但是如果能显示组织就更好了。这可能对用户有帮助:她/他可以看到哪些过滤器显示这些结果。
表单提交选择字段的选定值后如何保存和显示?
views.py:
def report(request):
user = request.user
admin = None
try:
admin = user.administrator
except ObjectDoesNotExist:
pass
if not admin:
return render(request, 'vms/no_admin_rights.html')
organization_list = get_organizations_ordered_by_name()
if request.method == 'POST':
form = ReportForm(request.POST)
if form.is_valid():
first_name = form.cleaned_data['first_name']
last_name = form.cleaned_data['last_name']
organization = form.cleaned_data['organization']
event_name = form.cleaned_data['event_name']
job_name = form.cleaned_data['job_name']
start_date = form.cleaned_data['start_date']
end_date = form.cleaned_data['end_date']
report_list = get_administrator_report(
first_name,
last_name,
organization,
event_name,
job_name,
start_date,
end_date
)
total_hours = calculate_total_report_hours(report_list)
return render(request, 'administrator/report.html', {'form': form, 'report_list': report_list, 'total_hours': total_hours, 'notification': True, 'organization_list': organization_list})
else:
return render(request, 'administrator/report.html', {'form': form, 'notification': False, 'organization_list': organization_list})
else:
form = ReportForm()
return render(request, 'administrator/report.html', {'form': form, 'notification': False, 'organization_list': organization_list})
forms.py:
class ReportForm(forms.Form):
first_name = forms.RegexField(regex=r'^[(A-Z)|(a-z)|(\s)]+$', max_length=30, required=False)
last_name = forms.RegexField(regex=r'^[(A-Z)|(a-z)|(\s)]+$', max_length=30, required=False)
organization = forms.RegexField(regex=r'^[(A-Z)|(a-z)|(\s)]+$', max_length=75, required=False)
event_name = forms.RegexField(regex=r'^[(A-Z)|(a-z)|(0-9)|(\s)|(\.)|(,)|(\-)|(!)]+$', max_length=75, required=False)
job_name = forms.RegexField(regex=r'^[(A-Z)|(a-z)|(\s)]+$', max_length=75, required=False)
start_date = forms.DateField(required=False)
end_date = forms.DateField(required=False)
【问题讨论】:
标签: python django forms select