Django:从具有多个值的表单字段中获取数据
目前,我正在构建一个django支持的web应用程序,用于从主表中显示过滤后的数据。我已经创建了一个表单,用户将在其中指定他/她的选择,并根据表单值显示数据(以表格形式)。 我的问题是,我无法从具有多个值的表单字段中获取数据。我使用“request.POST.get('fieldname','')从表单中获取数据,但对于多个值字段,它会显示最后一个值 示例: 如果用户在formfield“模块”中选择第一、第二和第四个选项 request.POST.get('Modules','') 只给了我第四个选择。我希望我能说清楚 views.py forms.pyDjango:从具有多个值的表单字段中获取数据,django,validation,django-forms,multichoiceitems,Django,Validation,Django Forms,Multichoiceitems,目前,我正在构建一个django支持的web应用程序,用于从主表中显示过滤后的数据。我已经创建了一个表单,用户将在其中指定他/她的选择,并根据表单值显示数据(以表格形式)。 我的问题是,我无法从具有多个值的表单字段中获取数据。我使用“request.POST.get('fieldname','')从表单中获取数据,但对于多个值字段,它会显示最后一个值 示例: 如果用户在formfield“模块”中选择第一、第二和第四个选项 request.POST.get('Modules','') 只给了我第
类一致性表单(forms.Form):
客户=forms.ModelChoiceField(
label=“客户名称”,
widget=forms.Select,
queryset=Customer.objects.all(),
空标签=无,
)
严重性级别=forms.modelcoocefield(
label=“严重级别”,
widget=forms.Select,
queryset=临界性.objects.all(),
空标签=无,
)
query\u status=forms.ModelChoiceField(
widget=forms.Select,
label=“查询状态”,
queryset=Status.objects.all(),
空标签=无,
help_text=“”
)
Modules=forms.modelmultipechoicefield(
label=“业务模块”,
widget=forms.CheckboxSelectMultiple,
queryset=Modules.objects.all(),
)
Components=forms.ModelMultipleChiceField(
widget=forms.CheckboxSelectMultiple,
queryset=Component.objects.all(),
)
模板文件
{%extends'home/base.html%}
{%block title%}一致性报告{%endblock%}
{%block content%}
{%csrf_令牌%}
{{form}}
{%endblock%}
您必须使用“getlist”方法:
request.POST.getlist('Modules')
见:
- (如果链接变旧,请将3.0更改为django的当前版本)
def consisreportgen(request):
if request.method == 'POST':
form = ConsistencyForm(request.POST or None)
if form.is_valid():
form_user_data = ConsistencyForm(request.POST)
Customer=form.cleaned_data['Customer']
Components=form.cleaned_data['Components']
Modules=form.cleaned_data['Modules']
customername=request.POST.get('Customer','')
modules_choosen=request.POST.get('Modules','')
bpc_choosen=request.POST.get('Components','')
severity=request.POST.get('Severity_level','')
print(modules_choosen)
print(customername)
print(severity)
print(bpc_choosen)
return HttpResponseRedirect('/consistency/results/')
else:
form = ConsistencyForm
return render(request,'consistency/consistency.html', {'form': form})
class ConsistencyForm(forms.Form):
Customer=forms.ModelChoiceField(
label="Customer Name",
widget=forms.Select,
queryset=Customer.objects.all(),
empty_label=None,
)
Severity_level=forms.ModelChoiceField(
label="Severity Level",
widget=forms.Select,
queryset=Criticality.objects.all(),
empty_label=None,
)
query_status=forms.ModelChoiceField(
widget=forms.Select,
label="Query Status",
queryset=Status.objects.all(),
empty_label=None,
help_text="</br>"
)
Modules=forms.ModelMultipleChoiceField(
label="Business Module",
widget=forms.CheckboxSelectMultiple,
queryset=Modules.objects.all(),
)
Components=forms.ModelMultipleChoiceField(
widget=forms.CheckboxSelectMultiple,
queryset=Component.objects.all(),
)
{% extends 'home/base.html' %}
{% block title %}Consistency Report {% endblock %}
{% block content %}
<form action=" " method="post">
{% csrf_token %}
{{ form }}
<br />
<input type="submit" value="Generate Report" />
</form>
{% endblock %}