Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 自定义视图不显示Django Haystack中使用弹性搜索的结果_Python_Django_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Django Views_Django Haystack - Fatal编程技术网 elasticsearch,django-views,django-haystack,Python,Django,elasticsearch,Django Views,Django Haystack" /> elasticsearch,django-views,django-haystack,Python,Django,elasticsearch,Django Views,Django Haystack" />

Python 自定义视图不显示Django Haystack中使用弹性搜索的结果

Python 自定义视图不显示Django Haystack中使用弹性搜索的结果,python,django,elasticsearch,django-views,django-haystack,Python,Django,elasticsearch,Django Views,Django Haystack,我开始使用Django Haystack和Elasticsearch 好的,直到我开始按照中的简单示例创建自定义视图 搜索索引。py: class ExperimentIndex(indexes.SearchIndex, indexes.Indexable): text = indexes.CharField(document=True, use_template=True) owner = indexes.CharField(model_attr='owner') d

我开始使用Django Haystack和Elasticsearch

好的,直到我开始按照中的简单示例创建自定义视图

搜索索引。py:

class ExperimentIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    owner = indexes.CharField(model_attr='owner')

    def get_model(self):
        return Experiment

    def index_queryset(self, using=None):
        return self.get_model().lastversion_objects.all()
url(r'^search/?$', NepSearchView.as_view(), name='search_view')
url(r'^search/', include('haystack.urls'))
{# ... #}
{% for result in page.object_list %}
{% if result.model_name == 'experiment' %}
{% include 'search/experiments.html' %}
{% endif %}
{% if result.model_name == 'study' %}
{% include 'search/studies.html' %}
{% endif %}
{% if result.model_name == 'group' %}
{% include 'search/groups.html' %}
{% endif %}
{% if result.model_name == 'experimentalprotocol' %}
{% include 'search/experimental_protocol.html' %}
{% endif %}
{# ... #}
url.py:

class ExperimentIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    owner = indexes.CharField(model_attr='owner')

    def get_model(self):
        return Experiment

    def index_queryset(self, using=None):
        return self.get_model().lastversion_objects.all()
url(r'^search/?$', NepSearchView.as_view(), name='search_view')
url(r'^search/', include('haystack.urls'))
{# ... #}
{% for result in page.object_list %}
{% if result.model_name == 'experiment' %}
{% include 'search/experiments.html' %}
{% endif %}
{% if result.model_name == 'study' %}
{% include 'search/studies.html' %}
{% endif %}
{% if result.model_name == 'group' %}
{% include 'search/groups.html' %}
{% endif %}
{% if result.model_name == 'experimentalprotocol' %}
{% include 'search/experimental_protocol.html' %}
{% endif %}
{# ... #}
url.py之前(无自定义视图):

class ExperimentIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    owner = indexes.CharField(model_attr='owner')

    def get_model(self):
        return Experiment

    def index_queryset(self, using=None):
        return self.get_model().lastversion_objects.all()
url(r'^search/?$', NepSearchView.as_view(), name='search_view')
url(r'^search/', include('haystack.urls'))
{# ... #}
{% for result in page.object_list %}
{% if result.model_name == 'experiment' %}
{% include 'search/experiments.html' %}
{% endif %}
{% if result.model_name == 'study' %}
{% include 'search/studies.html' %}
{% endif %}
{% if result.model_name == 'group' %}
{% include 'search/groups.html' %}
{% endif %}
{% if result.model_name == 'experimentalprotocol' %}
{% include 'search/experimental_protocol.html' %}
{% endif %}
{# ... #}
视图.py

class NepSearchView(SearchView):

    def get_queryset(self):
        queryset = super(NepSearchView, self).get_queryset()
        if not self.request.user.is_authenticated and \
                self.request.user.groups.filter(name='trustees').exists():
            return queryset  # (with some filter)
        else:
            return queryset
search.html:

class ExperimentIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    owner = indexes.CharField(model_attr='owner')

    def get_model(self):
        return Experiment

    def index_queryset(self, using=None):
        return self.get_model().lastversion_objects.all()
url(r'^search/?$', NepSearchView.as_view(), name='search_view')
url(r'^search/', include('haystack.urls'))
{# ... #}
{% for result in page.object_list %}
{% if result.model_name == 'experiment' %}
{% include 'search/experiments.html' %}
{% endif %}
{% if result.model_name == 'study' %}
{% include 'search/studies.html' %}
{% endif %}
{% if result.model_name == 'group' %}
{% include 'search/groups.html' %}
{% endif %}
{% if result.model_name == 'experimentalprotocol' %}
{% include 'search/experimental_protocol.html' %}
{% endif %}
{# ... #}
事实上,当使用默认Haystack
SearchView
时,我找到了正确的匹配项,而在引入
NepSearchView
时,
页面。对象列表
为空,我在模板中找不到任何结果。


我已经运行了
manage.py rebuild\u index
,在web上进行了大量搜索,但找不到任何可以解释我所缺少内容的内容。

查询集的page.object\u列表变量名似乎不存在。 请尝试不带“页面”前缀的对象列表

而不是

{% for result in page.object_list %}
使用

或者,您也可以在视图中添加如下内容,以提供自定义变量名

context_object_name = 'haystack_objects'
并在模板中使用它

{% for result in haystack_objects %}

很晚了,但我想我会问:你是如何着手诊断这个问题的?我挣扎了几个小时,精确地匹配了文档中的教程,尽管仍然使用默认模板
page.object\u list
。我很想知道今后如何避免类似的头痛。