我将一些Django查询转储到延迟的文件中,因此我将其作为参数sql_with_params
传递给稍后在延迟的raw
查询中执行。
我已将所有查询迁移到haystack,因此我不想对SearchQuerySet
执行相同操作。
有没有办法获取已经构建的SearchQuerySet的raw_query?
PD:我正在使用ElasticSearch
答案 0 :(得分:0)
当然,这是一种不幸需要一点管道的方法。您可以创建自定义搜索引擎,并将其查询设置为继承自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'
},
}