类型错误:index_queryset() 得到了一个意外的关键字参数“使用”

问题描述

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.2haystack 3.0 吗?

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...