问题描述
Django==3.2.5
django-haystack==3.0
pysolr==3.9.0
Solr = 8.9.0
我正在按照教程进行操作 https://django-haystack.readthedocs.io/en/master/tutorial.html 使用 Solr 创建 Django 应用程序。
在执行 ./manage.py rebuild_index
时,我收到如下错误:
**File "/..../tele_env/lib/python3.8/site-packages/haystack/indexes.py",line 202,in build_queryset
index_qs = self.index_queryset(using=using)
TypeError: index_queryset() got an unexpected keyword argument 'using'**
自从解决这个错误 3 天以来,我就被卡住了。试图降级每个 软件包(Django、pysolr、带有 solr 6.6 的 haystack,但对我没有帮助。
请帮我跳出这个升级降级的圈子... 提前致谢
解决方法
所以我刚刚阅读了 django-haystack
3.0 的源代码,发现了一些奇怪的东西。
首先是 using
参数从未在函数定义中使用过(也许它用于子类,我没有深入研究):
def index_queryset(self,using=None):
"""
Get the default QuerySet to index when doing a full update.
Subclasses can override this method to avoid indexing certain objects.
"""
return self.get_model()._default_manager.all()
回到你的错误,在 build_queryset
方法中,参数 using
被传递给函数 index_queryset 而不是 queryset 本身,所以我不明白为什么它会引发错误。>
最后一件事,我用 Django 2 和 3 项目进行了测试,使用始终是查询集的方法,而不是参数,所以我很困惑。您的回溯来自 Django 3.2
和 haystack 3.0
吗?