Django Models "IndexError: список индексов вне диапазона" Pydev - PullRequest
5 голосов
/ 06 января 2012

У меня есть проект Django в Eclipse PyDev.

У меня есть файл 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. Я думаю, что правильная метка приложения будет "болиг". Приложение работало несколько месяцев назад, и теперь, когда я возвращаюсь к нему, что-то не так. Я создавал другие проекты в PyDev.

Ответы [ 6 ]

8 голосов
/ 01 февраля 2013

Добавьте мета-класс с меткой app_label внутри определения класса модели:

class Foo:
    id = models.BigIntegerField(primary_key=True)
    class Meta:
        app_label = 'foo'
3 голосов
/ 19 февраля 2015

У меня было что-то похожее

вместо

from models import ingredient2

try:

from your_app_name.models import ingredient2
0 голосов
/ 17 октября 2013

в моем случае, models.py содержит модели

когда я импортирую модели в другие .py, скажем views.py, при запуске views.py

ошибка не возникает

но когда я запускаю models.py, он вызывает ту же ошибку.

так что я просто не буду работать в models.py

0 голосов
/ 10 апреля 2013

Я столкнулся с этой проблемой, используя Eclipse, Django и PyDev.Мне нужно было выбрать приложение (например, вместо некоторого файла .py) в обозревателе пакетов PyDev (левая панель), прежде чем нажать кнопку «Выполнить», чтобы все работало правильно.

0 голосов
/ 03 октября 2012

Я также получал ошибку kwargs = {"app_label": model_module.__name__.split('.')[-2]} при использовании PyDev .В моем случае проект не обновлялся до того, как я попытался запустить его.Как только я обновил его, все снова стало хорошо.

0 голосов
/ 12 февраля 2012

Ну, не совсем ответ, но ... Я закончил тем, что создал новый проект django, а затем скопировал в мой код. Это решило проблему.

...