新手django:创建模型时出现错误

1 投票
2 回答
715 浏览
提问于 2025-04-16 10:02

你好,
我在创建一个模型类的时候遇到了一个不明的错误(请看下面的代码)。我正在按照官方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 这个文件里,然后你就可以在命令行里创建模型的实例了。

撰写回答