你好,我在创建模型类时遇到未知错误(请查看下面的代码)。我正在关注官方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
>>>
答案 0 :(得分:3)
包含模型的模块应该从Python解释器的角度命名为myapp.models
。此错误意味着它只能解析为models
。
首先,包含此模型的Python模块需要位于PYTHONPATH上的Django application folder内。请按照教程中的说明尝试使用python manage.py startapp
。
如果模型模块肯定在应用程序文件夹中,请确保应用程序文件夹本身不是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 :(得分:1)
我认为您不应该在命令行解释器中定义模型,而是使用名为models.py
的应用程序文件,因为之前的评论者说。
当django正在处理你的模型时,它试图解析模型的应用程序名称。在您的情况下,模型没有任何应用程序。因此,只需将模型放在myproject/myapplication/models.py
文件中,然后您就可以在命令行解释器中创建模型实例。