我们如何在Django中进行通配符搜索。如果我从数据库中的列表中过滤用户名,如何使用这些确切的用户名或部分用户名显示过滤后的数据。?
def filter(request):
val3=''
if request.GET.has_key('choices'):
val2=request.GET.get('choices')
if request.GET.has_key('textField'):
val3=request.GET.get('textField')
if request.POST:
val2=request.POST.get('choices')
val3=request.POST.get('textField')
if val2=='Designation':
newData = EmployeeDetails.objects.filter(designation=val3)
flag=True
elif val2=='Name':
newData = EmployeeDetails.objects.filter(userName=val3)
flag=True
elif val2=='EmployeeID':
newData = EmployeeDetails.objects.filter(employeeID=val3)
flag=True
elif val2=='Project':
newData = EmployeeDetails.objects.filter(project=val3)
flag=True
elif val2=='DateOfJoin':
newData = EmployeeDetails.objects.filter(dateOfJoin=val3)
flag=True
else:
return HttpResponseRedirect('/employeeList/')
这是我的过滤功能。现在用精确的单词过滤。我想显示userNames,即使它的一部分用于过滤。请帮我解决这个问题,因为我是Django的新手
答案 0 :(得分:6)
您可以使用contains
查询,例如
Entry.objects.get(headline__contains='Lennon')
请参阅http://docs.djangoproject.com/en/dev/ref/models/querysets/#contains
还有其他选项,例如startswith,endswith,您甚至可以在大多数数据库上进行regex搜索。
答案 1 :(得分:4)
尝试使用不太严格的过滤器,例如__contains:
elif val2=='Name':
newData = EmployeeDetails.objects.filter(userName__contains=val3)
flag=True
文档:http://docs.djangoproject.com/en/dev/ref/models/querysets/#contains
答案 2 :(得分:1)
可能field lookups会帮助你。它允许按单词的开头过滤,包含单词等。