python manage.py syncdb不从models.py中提取

时间:2010-12-07 19:06:42

标签: python django django-models

我没有得到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
>>>

将模型导入为unador的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 个答案:

答案 0 :(得分:3)

您必须拥有应用程序包(例如myapp),并且模型必须在其中(myapp / models.py) 然后您可以导入myapp.models或myapp导入模型。

错误是因为django试图找到appname作为包含models模块的包(模型模块的路径必须至少有2个深度级别)。

此外,必须在INSTALLED_APPS

范围内声明应用程序

答案 1 :(得分:1)

模型应该包含在应用程序中,而不是直接包含在项目中。