【问题标题】:Query filter for address in djangodjango中地址的查询过滤器
【发布时间】:2017-05-10 21:36:03
【问题描述】:
我有一个 SQL 数据库,其中包含一个包含以下列的地点表:地址、城市、邮编、州
那么有没有一个 django 包或一种方法来简单地接受用户可能输入到搜索文本框中的任何查询并解析各个部分?就像我输入带有邮政编码的地址一样,所以在 django 后端我必须解析地址和邮政编码。有没有可以做到这一点的包?或者有人可以给出一个可能与 django 过滤器一起使用的通用算法吗?
【问题讨论】:
标签:
python
django
search
django-views
django-rest-framework
【解决方案1】:
您可以尝试使用 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})
但这会搜索所有列以进行匹配。就像,如果您在查询中键入“新”,它将为您提供所有值,例如城市=“纽约”,“新泽西”,地址=“新地址”,“纽约街”的那些。等等
Documentation