新手django:创建模型时出现错误
你好,
我在创建一个模型类的时候遇到了一个不明的错误(请看下面的代码)。我正在按照官方Django网站上的教程进行操作,但不知道为什么就是不成功,我已经为此苦恼了一段时间,但没有找到解决办法。我做的事情有什么问题吗?
>>> class a(models.Model):
... pass
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\django-1.1.2-py2.7.egg\django\db\models\base.py", line 52, in __new__
kwargs = {"app_label": model_module.__name__.split('.')[-2]}
IndexError: list index out of range
>>>
2 个回答
3
你的模型所在的模块应该被命名为 myapp.models
,从Python解释器的角度来看。这个错误的意思是,它只被识别为 models
。
首先,包含这个模型的Python模块需要放在一个Django应用程序文件夹里,并且这个文件夹要在PYTHONPATH中。你可以按照教程中的说明,使用 python manage.py startapp
来创建应用。
如果模型模块确实在一个应用文件夹里,确保这个应用文件夹本身没有被加入到PYTHONPATH中,只有包含它的项目文件夹需要在PYTHONPATH里。
为了更清楚地说明,这里是django源代码中错误的上下文:
# Figure out the app_label by looking one level up.
# For 'django.contrib.sites.models', this would be 'sites'.
model_module = sys.modules[new_class.__module__]
kwargs = {"app_label": model_module.__name__.split('.')[-2]}
1
我觉得你不应该在命令行里定义你的模型,而是应该像之前的评论者说的那样,使用一个叫做 models.py
的应用文件。当Django处理你的模型时,它会尝试解析模型的应用名称。在你的情况下,模型没有任何应用。所以,只需把你的模型放在 myproject/myapplication/models.py
这个文件里,然后你就可以在命令行里创建模型的实例了。