首先我要说的是,我在这里尝试了修复:
Haystack says “Model could not be found for SearchResult”
我还在
Model could not be found for SearchResult '<SearchResult: dictionary.termentry (pk=u'10')>'.
我在Django 1.9&amp; amp;干草堆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)
我不知道这里有什么问题,更不用说问题了(我的意思是,实际问题;我知道我得到了错误)。我的设置都是按照书本进行的,而且我已经将指数重新编制/重建了八十次。我的路径或数据结构没有任何时髦或花哨的东西,除了默认用于后端和数据库之外,我没有使用任何东西。
答案 0 :(得分:5)
我和Solr有同样的问题。在此处找到解决方案:Haystack says “Model could not be found for SearchResult”
基本上,Haystack 2.4.1使用对Django的过时调用,这在最新的主人中得到修复。
所以我用git + git://github.com/django-haystack/django-haystack.git替换了我的要求中的django-haystack == 2.4.1并开始工作。