python manage.py syncdb 不从 models.py 拉取数据
我在用 python manage.py syncdb 命令创建模型的表时遇到了问题;这显然是因为在尝试导入我的模型时抛出了一个异常,我对此感到有些困惑:
jhayward@jhayward81QDLD1 ~/project
$ python manage.py shell
Python 2.6.5 (r265:79063, Jun 12 2010, 17:07:01)
[GCC 4.3.4 20090804 (release) 1] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> import models
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/jhayward/project/models.py", line 23, in <module>
class architecture(models.Model):
File "/usr/lib/python2.6/site-packages/django/db/models/base.py", line 48, in
__new__
kwargs = {"app_label": model_module.__name__.split('.')[-2]}
IndexError: list index out of range
>>>
直接导入 django.db.models 并没有解决问题。我的 models.py 文件和我尝试导入的地方在同一个目录里;即使我把当前目录添加到 PYTHONPATH 中,它的表现也没有什么不同。
这个错误信息到底是什么意思,我需要做些什么来解决这个问题呢?
我的 models.py 的基本结构是:
from django.db import models
example_choice = (
(0, u'first choice'),
(1, u'second choice'),
)
[more such choices]
class architecture(models.Model):
name = models.TextField(null = True, blank = True)
[more such classes, with more fields and some interconnections but no more sophisticated syntax]
2 个回答
1
模型应该放在一个应用里面,而不是直接放在整个项目里。
3
你需要有一个应用包,比如叫做 myapp,模型文件必须放在这个包里面,也就是 myapp/models.py。这样你就可以用 myapp.models 或者从 myapp 导入 models。
出现这个错误是因为 Django 在找应用名称时,想把它当作一个包含模型模块的包(模型模块的路径至少要有两层)。
另外,这个应用还必须在 INSTALLED_APPS 中声明。