首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试根据说明安装Django-Treebeard时出现异常

尝试根据说明安装Django-Treebeard时出现异常
EN

Stack Overflow用户
提问于 2010-02-07 08:45:02
回答 2查看 2.3K关注 0票数 1

当我从一个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:

代码语言:javascript
复制
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中安装的应用程序:

代码语言:javascript
复制
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以安装

来自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

EN

回答 2

Stack Overflow用户

发布于 2012-07-12 01:48:39

今天我也犯了同样的错误。要解决这个问题,首先转到models.py文件,在每个类中都必须添加另一个类:

代码语言:javascript
复制
class Meta:
    app_label = 'app_name' # medCE.delib in your case

我认为你收到这个错误是因为你的应用名称中有句点。如果Meta类没有提供应用程序名称,Django将尝试通过分解文件夹结构来自己找出它。当发生这种情况时,它会在“句号位置”进行分解,并计算出应用程序的名称是medCE或delib,这显然不是您的应用程序名称。

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

票数 3
EN

Stack Overflow用户

发布于 2010-02-07 18:28:01

您可以在线浏览Django源代码:

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

抛出异常的相关代码具有以下注释:

代码语言:javascript
复制
# 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__。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2215403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档