我有一个SQL数据库,其中包含一个具有以下列的地点表:地址,城市,邮政编码,州
那么是否有一个 django 包或一种方法可以简单地将用户可能输入的任何查询放入搜索文本框并解析各个部分? 就像我输入一个带有邮政编码的地址一样,所以在 django 后端中我必须解析地址和邮政编码。有没有可以做到这一点的软件包?或者有人可以给出一个可能与 django 过滤器一起使用的通用算法吗?
你可以尝试使用 django Q,只需经过搜索文本,如下所示:
搜索.html
...
<form method='GET' action=''>
<input type="text" name="q" placeholder="Enter keywords">
<input type="submit" value="Search">
</form>
...
Views.py
from django.db.models import Q
def searchPlace(request):
places = Places.objects.all()
query = request.GET.get('q')
if query:
places = places.filter(
Q(address__icontains=query) |
Q(city__icontains=query) |
Q(zip__icontains=query) |
Q(state__icontains=query) |
).distinct()
return render(request, 'Search.html', {'places':places})
但这会在所有列中搜索匹配项。就像,如果您在查询中键入"New",它将为您提供所有值,例如城市="纽约","新泽西",地址="新地址","纽约街"等。
文档