Django 1.9/Haystack 2.4.1 "Model could not be found for SearchResult"

Django 1.9/Haystack 2.4.1 "Model could not be found for SearchResult"

首先让我说一下,我已经尝试过这里的修复:

而且我还在

Model could not be found for SearchResult '<SearchResult: dictionary.termentry (pk=u'10')>'.

我正在使用 Whoosh 使用 Django 1.9 和 Haystack 2.4.1。我确定 SearchQuerySet 过滤得很好(当我 print queryset 我得到一个 SearchResult 对象的列表时)。我没有触及 SearchIndex 定义之外的任何东西,所以这是开箱即用的东西。仅供参考,这里是相关的代码位:

在search_indexes.py中:

class TermIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True,use_template=True)
    rendered = indexes.CharField(use_template=True,indexed=False)

    def get_model(self):
        return TermEntry

    def index_queryset(self,using=None):
        """Used when updating index for model"""
        return self.get_model().objects.all()

在views.py中:

def search(request):
    query = ''
    queryset = None
    results = []
    showresults = True

    if request.method == 'GET' and request.GET.get('q'):
        form = SearchForm(request.GET)
        showresults = True

        query = request.GET.get('q')
        # making sure we got a query
        print query
        queryset = SearchQuerySet().filter(content=AutoQuery(query))
        # checking to see if we got anything in our queryset
        print queryset

        for q in queryset:
            print q
            results.append(q.object)

        # checking to see if we got any results
        print results

    else:
        form = SearchForm()
        showresults = False

    context_dict = {
        'query': query, 
        'results': results,
        'form': form,
        'showresults': showresults,
    }

    return render(request, 'search/search.html', context_dict)

我不知道这里的修复是什么,更不用说问题了(我的意思是,实际问题;我知道我遇到了错误)。我的设置都是照章办事的,我 nuked/rebuilt 索引大概有八十次。我的路径或数据结构没有任何时髦或花哨的东西,除了后端和数据库等的默认值外,我没有使用任何东西。

我和 Solr 有同样的问题。在这里找到解决方案:

基本上,Haystack 2.4.1 使用过时的 Django 调用,这在最新的 master 中已修复。

所以我已经将我的要求中的 django-haystack==2.4.1 替换为 git+git://github.com/django-haystack/django-haystack .git 它开始起作用了。