尝试按照说明安装 Django-Treebeard 时发生异常

2024-06-01 07:23:51 发布

您现在位置:Python中文网/ 问答频道 /正文

当从Django Treebeard节点进行子分类时,我收到了一条非描述性的错误消息(或者至少我不知道如何在这个上下文中解释),我不知道如何调试。我使用的安装说明在:http://code.tabo.pe/django-treebeard/src/tip/tbexample/(见文章末尾)。在

我创建了MP_Node的一个子类,syncdb正常工作。但是,加载模型.py代码进入shell会产生“列表索引超出范围”错误-请参阅下面的代码和跟踪。在

谢谢你的帮助。在

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

已在中安装应用设置.py公司名称:

^{pr2}$

说明:
1运行easy_install django-treebeard安装
PyPi的最新treebeard版本
1.1条。如果您不喜欢轻松安装,请从
treebeard下载页面或获取开发版本
从treebeard mercurial存储库运行
python setup.py install
2将“treebeard”添加到
django设置文件。
三。创建一个继承django treebeard的
抽象树模型:mp_tree.MP_节点(物化路径),
纳秒_tree.NS_节点(嵌套集)或al_tree.AL_节点
(邻接列表)。
4运行python manage.py syncdb


Tags: djangoinfrompyimportnodetreedb
2条回答

您可以在线浏览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'.

因此,代码似乎在试图确定模型所属的应用程序。在

要调试它,只需修改基准.py捕捉索引器错误并引发model\u模块。在

我今天也犯了同样的错误。要想修好你,先去模型.py文件,并在每个类中添加另一个类:

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

我想你得到这个错误是因为你的应用程序名称中的句点。如果元类中没有提供应用程序名称,Django将尝试通过分解文件夹结构来自己确定它。当这种情况发生时,它会在“period location”处分解,并计算出你的应用程序名是medCE或delib,这显然不是你的应用程序名。在

我知道这个问题很古老,但希望它能帮助未来的观众

相关问题 更多 >