2

我在一个 django 应用程序上工作的干草堆搜索。但是如何在两个不同的应用程序上实现相同的。

我尝试过的。在两个应用程序中创建了不同的 search_index.py。
应用程序1

import datetime
from haystack import indexes
from app1.models import App1

 class app1Index(indexes.SearchIndex, indexes.Indexable):
    text = indexes.EdgeNgramField(document=True, use_template=True)
    app1_text = indexes.CharField(model_attr='app1_text',null=True)
    tags = indexes.CharField(model_attr='tags')

    def get_model(self):
        return App1

应用程序2

import datetime
from haystack import indexes
from app2.models import App2

class app2Index(indexes.SearchIndex, indexes.Indexable):
    text = indexes.EdgeNgramField(document=True, use_template=True)
    app2_title = indexes.CharField(model_attr='app2_title',null=True)

    def get_model(self):
        return App2

这是 search.html

        {% for result in page.object_list %}
        <p>
                <a href="{{ result.object.get_absolute_url }}">{{ result.object.wish_text }}</a>
                <a href="{{ result.object.get_absolute_url }}">{{ result.object.title }}</a>

        </p>

我在正确的位置有两个应用程序的数据模板。App1 {{ object.app1_text }} App2 {{ object.app2_title }}

如果我不使用 App2 search_index 那么对于 App1 它工作正常。rebuild_index 和 update_index 也适用于这两个应用程序。

问题:我怎样才能使它适用于两个应用程序?

4

2 回答 2

0

好吧,我也不完全理解您要指出的问题据我所知,构建索引确实有效,这意味着 app(1|2)Index 确实找到了正确的模板。可能是 app2 的 url 问题。为了进一步调查,模板可能很有趣

于 2013-06-25T01:06:26.363 回答
0

我删除了所有内容并再次添加。

1 search_indexes.py in first app
1 search_indexes.py in second app
and a search.html template that fetch the results for both.

这次宾果游戏完美无缺。那么问题是什么。:) 我也不知道可能是一些拼写错误。

If somebody need explaination on answer please drop a comment here :) 

我现在可以搜索多个应用程序。

欢迎任何其他解决方案。

接受以供将来参考。

于 2013-06-25T08:23:20.470 回答