我需要在包含过滤器中执行Case Insensitive搜索,而不是使用精确的case sensitve匹配。
def filter(request, fname, fvalue):
list = HmsPatient.objects.filter(**{fname:fvalue})
c = {'list' : list}
return render_to_response('patient/list.html', c, context_instance=RequestContext(request))
def search(request):
if request.method == 'POST':
fname = request.POST.get('filter_name')
fvalue = request.POST.get('filter_value')
return filter(request, fname, fvalue);
else:
action = HmsPatient().get_search_url()
form = HmsPatientForm()
c = {'form': form, 'action' : action}
c.update(csrf(request))
return render_to_response('search.html', c, context_instance=RequestContext(request))
答案 0 :(得分:2)
Django允许您使用iexact
进行不区分大小写的匹配。例如:
Blog.objects.get(name__iexact="beatles blog")
在您的情况下,因为fname
是变量,您必须将__iexact
附加到词典中的键。
key = fname + '__iexact'
list = HmsPatient.objects.filter(**{key: fvalue})
答案 1 :(得分:2)
使用双引号n“icontains”进行不区分大小写的搜索。
def filter(request, fname, fvalue):
key = fname + '__icontains'
list = HmsPatient.objects.filter(**{key: fvalue})
c = {'list' : list}
return render_to_response('patient/list.html', c, context_instance=RequestContext(request))
使用双引号n“包含”用于案例敏感搜索。
def filter(request, fname, fvalue):
key = fname + '__contains'
list = HmsPatient.objects.filter(**{key: fvalue})
c = {'list' : list}
return render_to_response('patient/list.html', c, context_instance=RequestContext(request))
在MySQL中选择排序规则使得数据值区分大小写,如果您不选择任何排序规则,您的数据库将不区分大小写,即AbC = abc