Django模型“IndexError:列表索引超出范围”Pydev

时间:2012-01-06 07:10:09

标签: django-models

我在Eclipse PyDev中有一个Django项目。

我有一个文件views.py,其中包含以下行:

from models import ingredient2

在models.py中我有:

from django.db import models
class ingredient2(models.Model):
     ingredient     = models.CharField(max_length=200)

当我尝试运行应用时,出现以下错误:

File "C:\Python27\lib\site-packages\django\db\models\base.py", line 54, in __new__
kwargs = {"app_label": model_module.__name__.split('.')[-2]}
IndexError: list index out of range

我确实同步了数据库并启动了服务器运行。

我进入了base.py并添加了2个打印语句(是的,我可能不应该编辑Django的文件):

if getattr(meta, 'app_label', None) is None:
            # 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__]
            print model_module #ADDED
            print model_module.__name__ #ADDED
            kwargs = {"app_label": model_module.__name__.split('.')[-2]}

他们打印出来:

<module 'models' from 'C:\Users\Tine\workspace\slangen\slangen2\bolig\models.pyc'>

models

manage.py包含在bolig文件夹中。我认为正确的应用标签将是“bolig”。该应用程序几个月前就已经运行了,现在,当我回到它时,有些事情是不对的。我一直在PyDev中创建其他项目。

6 个答案:

答案 0 :(得分:8)

在模型类定义中添加一个带有app_label的元类:

class Foo:
    id = models.BigIntegerField(primary_key=True)
    class Meta:
        app_label = 'foo'

答案 1 :(得分:3)

我有类似的东西

而不是

from models import ingredient2

尝试:

from your_app_name.models import ingredient2

答案 2 :(得分:0)

嗯,不是真的答案,但是......我最终创建了一个新的django项目,然后在我的代码中复制。这解决了问题。

答案 3 :(得分:0)

使用 PyDev 时,我也遇到kwargs = {"app_label": model_module.__name__.split('.')[-2]}错误。就我而言,在我尝试运行之前,项目没有刷新。我一刷新,一切都很好。

答案 4 :(得分:0)

我使用Eclipse,Django和PyDev遇到了这个问题。我需要在PyDev Package Explorer(左侧面板)中选择应用程序(例如,而不是一些.py文件),然后单击Run以使一切正常工作。

答案 5 :(得分:-1)

就我而言,models.py包含模型

当我将模型导入其他.py时,请说views.py在运行views.py时不会引发错误

但是当我运行models.py时,它会引发同样的错误。

所以我不会在models.py中运行