您好 我正在尝试django框架,我的项目结构就像这样
../ mysite / src / mysite / models / models.py(models.py包含所有已定义的模型) ../mysite/src/mysite/(包含settings.py manage.py等)
当我运行syncdb时。只创建了django admin的表。但是我没有检测到models.py中的模型。
在settings.py中的INSTALLED_APPS部分。我加了'mysite'。
如果我从'mysite'改变 - >'mysite.src'它会给出错误“错误:没有名为src的模型” 如果我改变'mysite' - > 'mysite.models.models'它会给'AttributeError:'模块'对象没有属性'路径' “
有人可以帮我解决syncdb吗?
非常感谢
答案 0 :(得分:3)
将models.py文件从模型目录移出并返回到mysite目录。之后再试一次,它现在应该有效... syncdb依赖于文件/目录结构。
答案 1 :(得分:3)
如果您想要一个包含许多模型定义文件的“models”文件夹。您应该在models文件夹中包含一个名为 init .py的文件,您应该在该文件夹中导入应用程序的所有模型
# 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 *
答案 2 :(得分:1)
您理想的应用结构
ProjectDirectory/
|- settings.py
|- urls.py
\- AppDirectory
|- __init__.py
|- views.py
\- models.py
如果你想让它在它的当前配置中工作(我假设/ src在这个意义上是你的“项目目录”,并且已经添加到你的python路径或包含manage.py)那么在模型directoy包括一个名为__init__.py
的文件,并添加第from models import *
行。这将导入所有内容,并使您的models.py中的所有内容都可以通过django在其预期的位置访问。
答案 3 :(得分:1)
无论您的实际项目目录在哪里,您都需要使用python dot语法将models
应用添加到INSTALLED_APPS
,但您的models
应用是可解析的。
如果顶级mysite
位于您的python路径中,那么它将是src.mysite.models
。如果您的python路径中有src
,那么mysite.models
。
您应该将django项目目录的父文件夹(settings.py
所在的位置)添加到您的python路径,因此您的应用程序将被称为project.app
答案 4 :(得分:1)
我发现了问题所在。我的Models.py应该是models.py ....不应该以captical M开头。
感谢你们的帮助
答案 5 :(得分:0)
添加到您的设置文件
import os
import sys
ROOT_PATH = os.path.dirname(__file__)
sys.path.append(ROOT_PATH + '/src')
然后再次检查