2

我需要在包含过滤器中执行不区分大小写的搜索,而不是使用完全区分大小写的匹配。

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))
4

2 回答 2

2

Django 允许您使用iexact. 例如:

Blog.objects.get(name__iexact="beatles blog")

在您的情况下,因为fname是一个变量,您必须附加__iexact到字典中的键。

key = fname + '__iexact'
list = HmsPatient.objects.filter(**{key: fvalue})

Django 还支持containsand icontains,您可以以相同的方式使用它。

于 2012-10-04T11:55:42.493 回答
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

于 2012-10-08T08:24:10.150 回答