Django Haystack精确过滤

dam*_*mon 5 python django xapian django-haystack

我有一个haystack搜索,其中包含以下SearchIndex:

class GrantIndex(indexes.SearchIndex):
    """
    This provides the search index for the Grant application.
    """
    text = indexes.CharField(document=True, use_template=True)
    year = indexes.IntegerField(model_attr='year__year')
    date = indexes.DateField(model_attr='date')
    program = indexes.CharField(model_attr='program__area')
    grantee = indexes.CharField(model_attr='grantee')
    amount = indexes.IntegerField(model_attr='amount')
site.register(Grant, GrantIndex)

如果我想搜索过滤掉任何不是"健康"的程序,我运行以下查询:

from haystack.query import SearchQuerySet

sqs = SearchQuerySet()
sqs = sqs.filter(program='Health')

不幸的是,这也产生了来自"健康\其他"和"健康\心血管"计划的对象.如何阻止搜索允许其他程序进入?

我用Xapian作为我的搜索后端运行Ubuntu 9.10.

Dmi*_*nko 1

您可以按照此处所述使用字段查找。

sqs = sqs.filter(program__exact='Health')
Run Code Online (Sandbox Code Playgroud)

  • 根据文档和实践,filter(program =“Health”)和filter(program__exact =“Health”)是相同的。 (3认同)