Исключение при попытке установить Django-Treebeard на основе инструкций

Я получаю сообщение без описания (или, по крайней мере, не знаю, как интерпретировать в этом контексте) сообщение об ошибке при суб-lassing из узла Django-Treebeard и не уверен, как отлаживать. Я использую инструкции по установке: http://code.tabo.pe/django-treebeard/src/tip/tbexample/ (см. В конце публикации).

Я создаю подкласс MP_Node и работает syncdb. Однако загрузка кода models.py в оболочку вызывает ошибку «индекс индекса вне диапазона» – см. Ниже код и трассировку.

Спасибо за вашу помощь.

Python 2.6.4, Django 1.1, Treebeard 1.1:

try: from django.db import models, transaction from django.db.models import AutoField import django.dispatch from django.contrib.treebeard.mp_tree import MP_Node except ImportError, exc: print "django error in %s: %s" % (__file__, exc) class DelibNode(MP_Node): pass Traceback (most recent call last): File "<console>", line 1, in <module> File "C:\Program Files\Python26\lib\site-packages\django\db\models\base.py", line 52, in __new__ kwargs = {"app_label": model_module.__name__.split('.')[-2]} IndexError: list index out of range 

Установленные приложения в Settings.py:

 INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.s ites', 'django.contrib.admin', 'django.contrib.treebeard', 'medCE.delib' ) 

Инструкции:
1. Запустите easy_install django-treebeard чтобы установить
последняя версия treebeard от PyPi
1.1. Если вам не нравится easy_install, загрузите выпуск с
Загрузите страницу с Treebeard или получите версию для разработки
из хранилища ртутного дерева и запустить
python setup.py install
2. Добавьте «treebeard» в раздел INSTALLED_APPS в вашем
файл настроек django.
3. Создайте новую модель, которая наследуется от одного из django-treebeard's
абстрактные модели дерева: mp_tree.MP_Node (материализованный путь),
ns_tree.NS_Node (вложенные наборы) или al_tree.AL_Node
(список смежности).
4. Запустите python manage.py syncdb

2 Solutions collect form web for “Исключение при попытке установить Django-Treebeard на основе инструкций”

Сегодня у меня была такая же ошибка. Чтобы исправить это, сначала перейдите в файл models.py, и в каждом из классов вам нужно добавить другой класс:

 class Meta: app_label = 'app_name' # medCE.delib in your case 

Я думаю, что вы получаете эту ошибку из-за периода в имени вашего приложения. Если имя приложения не предоставляется классом Meta, Django попытается выяснить его сам, разложив структуру папок. Когда это произойдет, оно разлагается в «местоположении периода» и определяет имя приложения как medCE или delib в вашем случае, что, очевидно, не является вашим именем приложения.

Я знаю, что вопрос старый, но, надеюсь, это поможет будущим зрителям

Вы можете просмотреть исходный код Django в Интернете:

https://github.com/django/django/blob/master/django/db/models/base.py#L90

Соответствующий код, который генерирует исключение, содержит этот комментарий:

 # Figure out the app_label by looking one level up. # For 'django.contrib.sites.models', this would be 'sites'. 

Похоже, что код пытается определить приложение, к которому принадлежит модель.

Чтобы отладить это, вы можете просто изменить base.py, чтобы поймать IndexError и поднять model_module .__ name__.

Python - лучший язык программирования в мире.