Не удается использовать команды управления django из-за ошибок импорта, когда стог сена пытается импортировать multiligualmodel - PullRequest
1 голос
/ 20 декабря 2011

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

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

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

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

Ответы [ 2 ]

8 голосов
/ 20 декабря 2011

Это, вероятно, связано с взломами, совершенными в 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 или migrate решила это для меня, используя этот фрагмент в моем 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
0 голосов
/ 20 декабря 2011

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

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

...