如何将django-haystack搜索方面与自定义属性一起使用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将django-haystack搜索方面与自定义属性一起使用?相关的知识,希望对你有一定的参考价值。

我有一个Django-oscar商店,我成功安装了Solr 4.7.2作为搜索引擎。它适用于预定义的属性,例如: upc,title,product_class ...

但过滤其他属性不起作用。

多数民众赞成我的产品目录/ models.py:

class Product(AbstractProduct):
    video_url = models.URLField()
    co2 = models.IntegerField()
    is_public = models.BooleanField()
    test = models.TextField()

在search_indexes.py中,我尝试添加以下内容:

co2 = indexes.IntegerField(model_attr="co2", null=True, indexed=False)

def prepare_co2(self, obj):
        return self.apps.get_model().objects.filter(co2="2")
       # return obj.co2 etc. here I tried a lot of code, but didnt work

我还试图复制这个功能的现成代码。

有谁有想法,怎么做?当我过滤catalogue.products.title它工作正常,但没有与cataolgue.products.co2(我已经充满了自己)。

答案

您无法从prepare函数中过滤对象,只需指定haystack如何访问对象字段。

from haystack import indexes
import oscar.apps.search.search_indexes as oscar_search_indexes


class ProductIndex(oscar_search_indexes.ProductIndex):
    co2 = indexes.IntegerField(null=False, indexed=True)

    def prepare_co2(self, obj):
        return obj.co2

上面应该有效(一旦你在更新了Solr schema.xml之后重新编写了你的​​产品索引),如果没有,请用你得到的错误或带有样本数据的意外查询行为更新你的问题。

以上是关于如何将django-haystack搜索方面与自定义属性一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

Django-Haystack 使用带有 IAM 凭证的 Amazon Elasticsearch 托管

DJANGO-天天生鲜项目从0到1-009-搜索功能实现(django-haystack+whoosh+jieba)

django-haystack全文检索

什么是 django-haystack 的好示例 solrconfig.xml?

遇到502重新安装django-haystack

如何将自定义 tableView 搜索工具与 UISearchDisplayController 结合使用?