Reputation: 293
Hello I am trying out the django framework, and my project structure is like this
../mysite/src/mysite/models/models.py (models.py containts all defined models) ../mysite/src/mysite/ (contains the settings.py manage.py and etc)
when i run the syncdb. only django admin's tables are created. but my models in models.py are not detected.
In INSTALLED_APPS section in settings.py. i added 'mysite'.
if i change from 'mysite' ->'mysite.src' it will give an error "Error: no model named src" if i change from 'mysite' -> 'mysite.models.models' it will give 'AttributeError: 'module' object has no attribute 'path' '
can anyone help me with the syncdb?
thanks alot
Upvotes: 1
Views: 2313
Reputation: 631
if you want to have a "models" folder containing many model definition files. You should include a file named init.py in the models folder where you should import all the models of the application
# app/models/__init__.py
# assuming you have main_models and other_models files
from app.models.main_models import *
from app.models.other_models import *
Upvotes: 3
Reputation: 11888
Your ideal app structure is
ProjectDirectory/
|- settings.py
|- urls.py
\- AppDirectory
|- __init__.py
|- views.py
\- models.py
If you want it to work in it's current configuration (I'm assuming /src is your "project directory" in this sense and has either been added to your python path or contains manage.py) then inside the models directoy include a file called __init__.py
and add the line from models import *
. This will import everything and make everything in your models.py accessible by django in the place it expects it to be.
Upvotes: 1
Reputation: 293
i found where the issue is. my Models.py should be models.py.... should not start with captical M.
thanks guys for your help
Upvotes: 1
Reputation: 118458
Regardless of where your actual project directory is, you need to add the models
app to your INSTALLED_APPS
, in python dot syntax however your models
app is resolvable.
If the top level mysite
is in your python path, then it would be src.mysite.models
. If src
is in your python path, then mysite.models
.
You are supposed to add the parent folder of your django project directory (where settings.py
lives) to your python path, so your apps would be referred to as project.app
Upvotes: 1
Reputation: 4920
add to your setting file
import os
import sys
ROOT_PATH = os.path.dirname(__file__)
sys.path.append(ROOT_PATH + '/src')
and then check it again
Upvotes: 0
Reputation:
Move your models.py file out from models dir and back into the mysite dir. Try again afterwards, it should now work... syncdb is reliant on the file/dir structure.
Upvotes: 3