当我从一个Django-Treebeard节点进行子过滤时,我得到了一个非描述性的(或者至少我不知道如何在这个上下文中解释)错误消息,并且不确定如何调试。我正在使用http://code.tabo.pe/django-treebeard/src/tip/tbexample/上的安装说明(请参阅帖子的末尾)。
我创建了MP_Node的一个子类,同步数据库就可以工作了。但是,将models.py代码加载到shell中会产生"list index out of range“错误-请参阅下面的代码和跟踪。
谢谢你的帮助。
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'
)使用说明:
easy_install django-treebeard以安装来自PyPi的最新树须版本
1.1。如果您不喜欢easy_install,请从
treebeard下载页面或获取开发版本
从treebeard mercurial存储库运行
python setup.py install
2.将'treebeard‘添加到你的INSTALLED_APPS部分
django设置文件。
3.创建一个新模型,它继承自django-treebeard的
抽象树模型: mp_tree.MP_Node (物化路径),
ns_tree.NS_Node (嵌套集合)或al_tree.AL_Node
(邻接列表)。
4.运行python manage.py syncdb
发布于 2012-07-12 01:48:39
今天我也犯了同样的错误。要解决这个问题,首先转到models.py文件,在每个类中都必须添加另一个类:
class Meta:
app_label = 'app_name' # medCE.delib in your case我认为你收到这个错误是因为你的应用名称中有句点。如果Meta类没有提供应用程序名称,Django将尝试通过分解文件夹结构来自己找出它。当发生这种情况时,它会在“句号位置”进行分解,并计算出应用程序的名称是medCE或delib,这显然不是您的应用程序名称。
我知道这个问题很老,但希望它能帮助未来的观众
发布于 2010-02-07 18:28:01
您可以在线浏览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__。
https://stackoverflow.com/questions/2215403
复制相似问题