Django 1.6:匹配查询不存在
我试图实现一个下拉表单,根据下拉列表中的选择过滤对象。我这样做没有任何问题,但当没有选择任何内容并单击提交时,它会给我一个错误。我希望它不过滤任何东西,只给出对象的整个列表,但我得到以下错误Django 1.6:匹配查询不存在,django,forms,drop-down-menu,get,Django,Forms,Drop Down Menu,Get,我试图实现一个下拉表单,根据下拉列表中的选择过滤对象。我这样做没有任何问题,但当没有选择任何内容并单击提交时,它会给我一个错误。我希望它不过滤任何东西,只给出对象的整个列表,但我得到以下错误专业化匹配查询不存在在线 spec = Specialization.objects.get(name = s_name) 这是模板,我把表格放在这里 <form action="/doclistings/" method="GET" > <select class="fo
专业化匹配查询不存在
在线
spec = Specialization.objects.get(name = s_name)
这是模板,我把表格放在这里
<form action="/doclistings/" method="GET" >
<select class="form-control" id="selection" name="selection">
<option><b>Choose a Speciality...</b></option>
{% for value, text in form.selection.field.choices %}
<option name="choicemade" value="{{ value }}">{{ text }}</option>
{% endfor %}
<!-- {% csrf_token %} -->
</select>
<span class="input-group-btn">
<button class="btn btn-primary" type="submit" name="submit" id="ss-submit">Find Doctors</button>
</span>
</form>
这是呈现下拉表单的视图
def index(request):
d = getVariables(request,dictionary={'page_name': "Home"})
if request.method == "POST":
form = DropdownSelectionForm(request.POST)
if form.is_valid():
selection = form.cleaned_data['selection']
return HttpResponseRedirect('/doclistings')
else:
form = DropdownSelectionForm()
return render(request, 'meddy1/index.html', {'form': form})
这是根据选择渲染对象的视图
def doclistings(request):
d = getVariables(request)
if request.method == "GET":
s_name = request.GET['selection']
if s_name == "":
doctors = Doctor.objects.all().order_by('-netlikes')
else:
spec = Specialization.objects.get(name = s_name)
doctors = Doctor.objects.filter(specialization = spec).order_by('-netlikes')
else:
return HttpResponseRedirect('/doclistings')
d['doctors'] = doctors
return render_to_response('meddy1/doclistings.html',d)
这就是为什么您应该使用QueryDict方法,如下所示:
s_name = request.GET.get('selection', None)
if not s_name:
#if s_name is None
#...
这样,如果s_名称不存在,它将正确回退。请显示您的表单代码我已在上面添加了表单代码请显示我的选择HM。。。尝试添加debug并查看视图中的s_name变量,或者只打印它,并确保存在具有该名称的专门化。如果一切正常,请写入所有错误回溯和s_name值。
s_name = request.GET.get('selection', None)
if not s_name:
#if s_name is None
#...