在 Django 中搜索多个字段 [英] Search through multiple fields in Django
问题描述
我正在尝试构建一个搜索系统,我想在我的 Django 模型中按多个字段name, state, city,
进行搜索.我写了下面的代码,但我一直无法弄清楚如何去做.
I'm trying to build a search system, and I want to search by multiple fieldsname, state, city,
in my django models. I wrote the below code, yet I've been unable to figure out how to go about it.
型号:
class Finhall(models.Model):
user=models.ForeignKey(User)
name=models.CharField(max_length=250, unique=True)
address=models.CharField(max_length=200)
city=models.CharField(max_length=200)
state=models.CharField(max_length=200)
def __unicode__(self):
return u'%s' % (self.name)
视图.py
def hup_find(request):
if ('q' in request.GET) and request.GET['q'].strip():
query_string=request.GET.get('q')
seens=Finhall.objects.filter(name__icontains=query_string)
else:
seens=None
return render_to_response('find.html',{'seens':seens},context_instance=RequestContext(request))
模板:
{% block content %}
<body>
<form action="" method="GET">
<input type="text" name="q" />
<button type="submit">search</button>
</form>
{% for seen in seens %}
<p> {{seen.name}}</p>
{% empty %}
<p> no search </p>
{% endfor %}
</body>
{% endblock %}
我该怎么办?由于一些个人原因,我不想使用 haysatck.
How can I go about this? I don't want to use haysatck due to some personal reasons.
推荐答案
你可以使用 django Q
对象做OR
查询,
you can use django Q
objects to do OR
query,
或者如果你想AND
你的查询一起使用当前查找作为kwargs
or if you want to AND
your queries together just use the current lookups as kwargs
seens = Finhall.objects.filter(
name__icontains=query_string,
address__icontains=query_string
)
您真的应该考虑全文搜索或 haystack
(这使搜索变得容易),因为 icontains
发出一个不是远程的 %LIKE%
可扩展
You should really consider full text search or haystack
(which makes search easy) because icontains
issues a %LIKE%
which is not remotely scalable
这篇关于在 Django 中搜索多个字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!