python manage.py syncdb 不从 models.py 拉取数据

0 投票
2 回答
550 浏览
提问于 2025-04-16 08:11

我在用 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 中声明。

撰写回答