У меня есть приложение, которое разбивает модели на разные файлы.
На самом деле папка выглядит так:
>myapp
__init__.py
models.py
>hooks
...
...
myapp
не заботится о том, что находится в папке hooks
, за исключением того, что есть модели, и что их нужно каким-то образом импортировать и установить с помощью syncdb. Итак, я положил это в myapp.__init__.py
:
from django.conf import settings
for hook in settings.HOOKS :
try :
__import__(hook)
except ImportError as e :
print "Got import err !", e
#where settings.HOOKS = ("myapp.hooks.a_super_hook1", ...)
Чтобы этот код работал, модели в hooks
имеют
class Meta:
app_label="my_app"
Проблема в том, что он не работает, когда я запускаю syncdb
.
Итак, я попытался последовательно:
1)
for hook in settings.HOOKS :
try :
exec ("from %s import *" % hook)
-> тоже не работает: syncdb не устанавливает модели в hooks
2)
from myapp.hooks.a_super_hook1 import *
-> Это работает
3)
exec("from myapp.hooks.a_super_hook1 import *")
-> Это работает до
Итак, я проверил, что в тесте 1) выполненный оператор такой же, как в тестах 2) и 3) , и это точно то же самое ...
Есть идеи ???
РЕДАКТИРОВАТЬ:
Вопрос можно обобщить так:
Я объявил модели вне "models.py", где нужно разместить МОЙ код импорта, чтобы syncdb
нашел модели?