我正在尝试使用 whoosh 后端设置 haystack。当我尝试生成索引 [或与此相关的任何索引命令] 时,我收到:
TypeError: Item in ``from list'' not a string
如果我完全删除我的 search_indexes.py 我会得到同样的错误 [所以我猜它根本找不到那个文件]
什么可能导致此错误?它设置为自动发现,我确定我的应用程序已安装,因为我目前正在使用它。
完整追溯:
Traceback (most recent call last):
File "./manage.py", line 17, in <module>
execute_manager(settings)
File "/Users/ghostrocket/Development/Redux/.dependencies/django/core/management/__init__.py", line 362, in execute_manager
utility.execute()
File "/Users/ghostrocket/Development/Redux/.dependencies/django/core/management/__init__.py", line 303, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/ghostrocket/Development/Redux/.dependencies/django/core/management/__init__.py", line 257, in fetch_command
klass = load_command_class(app_name, subcommand)
File "/Users/ghostrocket/Development/Redux/.dependencies/django/core/management/__init__.py", line 67, in load_command_class
module = import_module('%s.management.commands.%s' % (app_name, name))
File "/Users/ghostrocket/Development/Redux/.dependencies/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/Users/ghostrocket/Development/Redux/.dependencies/haystack/__init__.py", line 124, in <module>
handle_registrations()
File "/Users/ghostrocket/Development/Redux/.dependencies/haystack/__init__.py", line 121, in handle_registrations
search_sites_conf = __import__(settings.HAYSTACK_SITECONF)
File "/Users/ghostrocket/Development/Redux/website/../website/search_sites.py", line 2, in <module>
haystack.autodiscover()
File "/Users/ghostrocket/Development/Redux/.dependencies/haystack/__init__.py", line 83, in autodiscover
app_path = __import__(app, {}, {}, [app.split('.')[-1]]).__path__
TypeError: Item in ``from list'' not a string
这是我的 search_indexes.py
from haystack import indexes
from haystack import site
from myproject.models import *
site.register(myobject)
最佳答案
您似乎遇到了两个问题。
第一个是生成 TypeError
的那个。当 Haystack 在 INSTALLED_APPS
中列出的每个应用程序中搜索 search_indexes.py 时(因为您正在自动注册),就会发生这种情况。我不确定问题到底是什么,但我会首先在您的项目中搜索 from list
并仔细检查您的代码。我以前没有遇到过那个异常,但是如果这发生在你写的代码中,你应该在你的问题中发布任何相关部分
我相信无论是否使用 search_indexes.py 文件都会出现相同错误的原因是它从未达到尝试执行该文件中的代码的程度。
也就是说,该文件中应该发生更多事情(这是第二个问题)。您必须创建一个索引类(从 haystack.indexes.SearchIndex 继承)并将其注册到模型中。有关说明和示例,请参阅 this section of the documentation。
我也会在 django-haystack Google Group 中问这个问题,因为 haystack 的作者和其他用户会在那里看到它,而且他们往往非常有帮助。
关于python - Haystack/Whoosh 索引生成错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1971356/