序列化 Haystack SearchQuerySet

Serialize Haystack SearchQuerySet

我在延迟的文件中转储了一些 Django 查询,因此我将参数 sql_with_params 传递给稍后在延迟的 raw 查询中执行。

我已将所有查询迁移到 haystack,所以我不想对 SearchQuerySet 做同样的事情。

有什么方法可以获取已构建的 SearchQuerySet 的 raw_query?

PD:我正在使用 ElasticSearch

当然,不幸的是,这是一种需要一些管道的方法。您可以创建自定义搜索引擎并将其查询设置为您自己继承自 ElasticsearchSearchQuery:

的查询定义
from haystack.backends.elasticsearch_backend import ElasticsearchSearchEngine, ElasticsearchSearchQuery


class ExtendedElasticsearchSearchQuery(ElasticsearchSearchQuery):
    def build_query(self):
        raw_query = super(ExtendedElasticsearchSearchQuery, self).build_query()
        # TODO: Do something with raw query
        return raw_query

class ExtendedElasticsearchSearchEngine(ElasticsearchSearchEngine):
    query = ExtendedElasticsearchSearchQuery

并从您的设置中引用:

HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'myapp.mymodule.ExtendedElasticsearchSearchEngine',
        'URL': 'http://localhost:9200/',
        'INDEX_NAME': 'haystack'
    },
}