syncdb不会为我的应用程序创建表

时间:2011-03-13 07:12:46

标签: django django-models

您好    我正在尝试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吗?

非常感谢

6 个答案:

答案 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')

然后再次检查

相关问题