Python 使用多选择表单在DJANGO中进行筛选
我有一个表单输入(见下文),用户可以根据多个属性(如名称、设备类型、设备是否具有特定功能和材料功能等)过滤车间对象 表格: 表单模板:Python 使用多选择表单在DJANGO中进行筛选,python,html,django,forms,filter,Python,Html,Django,Forms,Filter,我有一个表单输入(见下文),用户可以根据多个属性(如名称、设备类型、设备是否具有特定功能和材料功能等)过滤车间对象 表格: 表单模板: <form method="get" action="."> <fieldset> <legend>WHAT ARE YOU LOOKING FOR?</legend> <div class=&quo
<form method="get" action=".">
<fieldset>
<legend>WHAT ARE YOU LOOKING FOR?</legend>
<div class="suggestion-wrap">
<span>Workshop</span>
<span>Equipment</span>
<span>Materials</span>
<span>Capabilities</span>
</div>
<div class="inner-form">
<div class="input-field">
<select multiple placeholder="Type to search..." name="name_contains" id="choices-text-preset-values" class="form-control">
{% for Material in material_list %}
<option>{{ Material.material }}</option>
{% endfor %}
{% for MachineType in machinetype_list %}
<option>{{ MachineType.machineType }}</option>
{% endfor %}
{% for Capabilities in capabilities_list %}
<option>{{ Capabilities.capabilities }}</option>
{% endfor %}
{% for Workshop in workshop_list %}
<option>{{ Workshop.workshop_name }}</option>
{% endfor %}
{% for Equipment in equipment_list %}
<option>{{ Equipment.equipment_name }}</option>
{% endfor %}
</select>
<div class="select-dropdown"></div>
<button class="btn-search" type="submit">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
<path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path>
</svg>
</button>
</div>
</div>
</fieldset>
<!-- <button class="btn-submit" type="submit">search</button> -->
</form>
此筛选器的目标是显示:
我想我可以让它工作,如果我可以做一个新的数组或列表的所有输入的标签。非常感谢您的帮助。来自django QueryDict
getlist()
getlist(键,默认值=None)
返回具有请求的键的数据列表。返回一个空值
如果密钥不存在且未提供默认值,请列出。
除非提供默认值,否则保证返回列表
这不是一个列表
我如何使用它进行过滤呢?这似乎是可行的:qs=Workshop.objects.filter(Q(Workshop\u name\uu in=search\u items)| Q(device\uu device\u name\uu in=search\u items)).distinct()
def BootstrapFilterView(request):
qs = Workshop.objects.all()
name_contains_query = request.GET.get('name_contains')
if is_valid_queryparam(name_contains_query):
qs = Workshop.objects.filter(Q(workshop_name__icontains=name_contains_query)
| Q(equipment__equipment_name__icontains=name_contains_query)
, Q(equipment__equipment_materials__material__icontains=name_contains_query)
, Q(equipment__equipment_capabilities__capabilities__icontains=name_contains_query)
, Q(equipment__equipment_machineType__machineType__icontains=name_contains_query)
).distinct()
capabilities_list = Capabilities.objects.order_by('capabilities')
machinetype_list = MachineType.objects.order_by('machineType')
material_list = Material.objects.order_by('material')
equipment_list = Equipment.objects.all()
workshop_list = Workshop.objects.all()
print(name_contains_query)
return render(request, "bootstrap_form.html", {'capabilities_list': capabilities_list,
'material_list': material_list,
'machinetype_list': machinetype_list,
'equipment_list': equipment_list,
'workshop_list': workshop_list,
'queryset': qs
})
request.GET.getlist('name_contains')