Невозможно использовать команды управления django из-за ошибок импорта, когда стог сена пытается импортировать многоязычную модель.

Я использую django-haystack для поиска на своем сайте. Я также использую многоязычную модель django для I18n. Я импортирую MultilingualModel в search_indexes.py

Я могу запускать все команды управления, пока у меня нет стога сена в INSTALLED_APPS.

Когда стог сена находится в INSTALLED_APPS и пытаюсь запустить syncdb или migrate (и несколько других команд управления), я всегда получаю:

django.core.exceptions.ImproperlyConfigured: ImportError haystack: cannot import name MultilingualModel

person scherlock    schedule 20.12.2011    source источник


Ответы (2)


Вероятно, это связано со взломом, сделанным в haystack.autodiscover(). Это поведение задокументировано здесь: http://docs.haystacksearch.org/dev/debugging.html#import-errors-on-start-up-mentioning-handle-registrations В этой заявке есть длинное обсуждение: https://github.com/toastdriven/django-haystack/issues/84

Длинный и короткий, если это то, что перемещение haystack.autodiscover() в ваш urls.py иногда может решить эту проблему. Настройка HAYSTACK_ENABLE_REGISTRATIONS = False при запуске syncdb или миграции решила эту проблему для меня, используя этот фрагмент в моем settings.py:

# FIXME: This is a complete hack to get around circular imports in 
# django-haystack and other apps such as django-endless-pagination
SKIP_COMMANDS = ['syncdb', 'migrate', 'schemamigration', 'datamigration']
if any([command in sys.argv for command in SKIP_COMMANDS]):
    HAYSTACK_ENABLE_REGISTRATIONS = False
person Mark Lavin    schedule 20.12.2011
comment
Спасибо, это мне очень помогло! - person scherlock; 21.12.2011

search_indexes.py не обрабатывается, если стог сена не находится в INSTALLED_APPS. Проблема с импортом MultilingualModel вообще. Либо он действительно не установлен в вашей среде (попытка импортировать его из ванильной оболочки Python), либо у вас неправильный импорт (например, на самом деле он находится в другом модуле).

Как только вы сможете успешно импортировать MultilingualModel из оболочки Python, у вас не будет никаких проблем.

person Chris Pratt    schedule 20.12.2011