Declare models elsewhere than in "models.py"
- by sebpiq
Hi !
I have an application that splits models into different files.
Actually the folder looks like :
>myapp
__init__.py
models.py
>hooks
...
...
myapp don't care about what's in the hooks, folder, except that there are models, and that they have to be declared somehow. So, I put this in 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 HOOKS = ("myapp.hooks.a_super_hook1", ...)
The problem is that it doesn't work when I run syncdb(and throws some strange "Got import err !"... strange considering that it's related to another module of my program that I don't even import anywhere :/ ) !
So I tried successively :
1)
for hook in settings.HOOKS :
try :
exec ("from %s import *" % hook)
doesn't work either : syncdb doesn't install the models in hooks
2)
from myapp.hooks.a_super_hook1 import *
This works
3)
exec("from myapp.hooks.a_super_hook1 import *")
This works to
So I checked that in the test 1), the statement executed is the same than in tests 2) and 3), and it is exactly the same ...
Any idea ???