【问题标题】:Haystack searching multiple fields干草堆搜索多个字段
【发布时间】:2012-05-22 02:21:03
【问题描述】:

我目前正在 django 中构建一个页面,其中有 4 个表单字段、2 个文本、2 个选择字段,提交后它会获取这些字段并搜索多个模型以查找匹配项。

模型如下所示:

class Person(models.Model):
    user = models.ForeignKey(User, blank=True, null=True, verbose_name="the user associated with this profile")
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)
    about = models.TextField(max_length=255, blank=True, null=True)
    birthdate = models.DateField(blank=True, null=True, verbose_name="Birthdate (yyyy-mm-dd)")
    GENDER_CHOICES = (
        (u'M', u'Male'),
        (u'F', u'Female'),
    )
    gender = models.CharField(max_length=1, choices = GENDER_CHOICES, default = 'M')
    picture = models.ImageField(upload_to='profile', blank=True, null=True)
    nationality = CountryField(blank=True, null=True)
    location = models.CharField(max_length=255, blank=True, null=True)
    command_cert = models.BooleanField(verbose_name="COMMAND certification")
    experience = models.ManyToManyField('userProfile.MartialArt', blank=True, null=True)

我正在尝试搜索 first_name 字段、last_name 字段、nationality 字段和 experience 字段,但是如果 first_name 字段为空,我需要传递一个空值,以便它返回所有行,然后过滤从那里以同样的方式姓氏,由于某种原因,它对我来说根本不起作用。这是我的sqs:

results = SearchQuerySet().models(Person).filter(first_name=sname, last_name=slastname, nationality=scountry, experience__pk=sexperience)

有什么想法吗?

【问题讨论】:

    标签: django django-haystack whoosh


    【解决方案1】:

    没有看到具体的错误或堆栈跟踪,很难确定什么“根本不起作用”。

    编辑:查看您提供的视图代码,我将删除过滤器并返回您的 Fighter、Referee、Insider 和 Judge 模型的所有对象。这是为了确保这里的问题出在过滤器上,而不是其他问题。

    然后,一旦我确认对象被放入结果中,我会一次放入一个过滤器以确定有问题的过滤器是什么。试一试,然后回复您的结果。

    【讨论】:

    • 无论我在该字段中使用何种条目组合,即使它们都是空白的,它也不会返回任何内容。
    • 您可以粘贴此页面的整个视图吗?您的过滤器不返回任何内容的原因有很多,但如果没有更多信息,我无法开始对其进行故障排除。
    • 这听起来像是搜索索引问题。我们能看到 search_indexes.py 长什么样吗? results = SearchQuerySet().models(Person).filter(content=sname) 返回什么? (仅当为给定的搜索字段设置了Document=True 时才有效)。
    • 是的,这是我的全部搜索索引:import haystack haystack.autodiscover()
    • 但是,如果我从该查询中删除过滤器,它会返回我指定的模型数据库中的所有项目
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    • 1970-01-01
    相关资源
    最近更新 更多