我正试图用后嘶嘶声设置干草堆.当我尝试生成索引[或任何索引命令]时,我收到:
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时(因为您正在自动注册).我不确定问题究竟是什么,但我首先要从列表中搜索你的项目并仔细检查你的代码.我以前没有遇到过这个例外,但是如果你在编写的代码中发生这种情况,你应该在你的问题中发布任何相关的部分
我相信你在使用或不使用search_indexes.py文件时得到相同错误的原因是因为它永远不会到达尝试执行该文件中的代码的程度.
也就是说,该文件中应该发生更多(这是第二个问题).您必须创建一个索引类(继承自haystack.indexes.SearchIndex)并将其注册到模型中.有关说明和示例,请参阅this section of the documentation.
我也会在django-haystack Google Group中提出这个问题,因为作者和干草堆的其他用户会在那里看到它,而且它们往往非常有帮助.