elasticsearch,django-haystack,Python,Django,Google App Engine,elasticsearch,Django Haystack" /> elasticsearch,django-haystack,Python,Django,Google App Engine,elasticsearch,Django Haystack" />

Python Django Haystack Elasticsearch在开发服务器上返回所有内容,但在shell中工作

Python Django Haystack Elasticsearch在开发服务器上返回所有内容,但在shell中工作,python,django,google-app-engine,elasticsearch,django-haystack,Python,Django,Google App Engine,elasticsearch,Django Haystack,在本地机器上安装elasticsearch服务器并运行development server之后,我发现任何查询都会返回每个索引。然而,当我签入shell以确保所有内容都被正确索引时,它工作得完美无缺。当我强制haystack.views.SearchView返回查询结果时,问题仍然存在: class SearchView(object): template = 'search/search.html' extra_context = {} query = '' r

在本地机器上安装elasticsearch服务器并运行development server之后,我发现任何查询都会返回每个索引。然而,当我签入shell以确保所有内容都被正确索引时,它工作得完美无缺。当我强制
haystack.views.SearchView
返回查询结果时,问题仍然存在:

class SearchView(object):
    template = 'search/search.html'
    extra_context = {}
    query = ''
    results = EmptySearchQuerySet()
    request = None
    form = None
    results_per_page = RESULTS_PER_PAGE

    def get_results(self):
        return SearchQuerySet().auto_query('john')
将每个索引数据返回到模板

另一方面:

$ ./manage.py shell
>>> from haystack.query import SearchQuerySet
>>> SearchQuerySet().all()
[<SearchResult: custom_user.user (pk=u'1')>, <SearchResult: custom_user.user (pk=u'2')>, <SearchResult: custom_user.user (pk=u'3')>, u'...(remaining elements truncated)...']
>>> SearchQuerySet().auto_query('john')
[<SearchResult: custom_user.user (pk=u'1')>]
自定义用户/搜索索引.py

# -*- coding: utf-8 -*-
from haystack import indexes

from .models import User


class UserIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    username = indexes.CharField(model_attr='username')
    nickname = indexes.CharField(model_attr='nickname')

    def get_model(self):
        return User

    def index_queryset(self, using=None):
        return self.get_model().objects.filter(is_active=True).order_by('nickname')

我认为可能存在一个问题,那就是你如何建立自己的观点并继承haystack。你能逐字逐句地试一下吗

from haystack.views import SearchView
from haystack.query import SearchQuerySet
class MySearchView(SearchView):

    def get_results(self):
        return SearchQuerySet().auto_query('john')

我看到了同样的问题,我环顾四周试图理解为什么会发生这种情况。我找到的最接近解决方案是:

您是否尝试过从Haystack的SearchView继承?例如,
classmysearchview(haystack.views.SearchView)
我试着自定义“def basic_search()”。刚做了,得到了相同的结果,得到了每个索引数据。
from haystack.views import SearchView
from haystack.query import SearchQuerySet
class MySearchView(SearchView):

    def get_results(self):
        return SearchQuerySet().auto_query('john')