在 Django 中搜索多个字段 [英] Search through multiple fields in Django

查看:85
本文介绍了在 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 ANDyour 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆