1
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 天以来,我一直坚持。尝试使用 solr 6.6 降级每个软件包(Django、pysolr、haystack,但没有帮助我。

请帮助我摆脱这个升级和降级的循环......在此先感谢

4

1 回答 1

1

所以我刚刚阅读了django-haystack3.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 而不是查询集本身,所以我不明白为什么它会引发错误。

最后一件事是,我用 Django 2 和 3 项目进行了测试,并且 using 始终是查询集的方法,而不是参数,所以我很困惑。您的追溯来自Django 3.2andhaystack 3.0吗?

于 2021-07-09T12:11:05.307 回答