问题标签 [django-treebeard]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
7152 浏览

database - Django:如何为异构数据类型树建模?

我需要在我的数据库中存储一个树数据结构,我计划为此使用django-treebeard或可能的 django-mptt。我的困惑是每个节点都可能是三种不同类型中的一种:根节点始终是 A 类实体,叶节点始终是 C 类实体,介于两者之间的任何东西都将是 B 类实体。我想知道模拟这种情况的最佳方法。

更新: 我首先尝试了模型继承,我认为这可能是最好的方法。不幸的是,django-treebeard 的公共 API 并没有真正设计来处理这个问题。我最终让它与 GenericForeignKey 一起工作。非常感谢您的回答。

0 投票
1 回答
4334 浏览

django - Django treebeard AL、NS、MP 有什么区别

我正在尝试制作一个模型来对某些对象进行分类。

我已经尝试使用 django-mptt 轻松检索相关类别,现在我正在搜索不同的解决方案以找到最好的解决方案。

我不知道物化路径、邻接列表和嵌套集之间的主要区别是什么。维基百科没有给我一个简短的答案,我所知道的是 mptt 可能是嵌套集......

谁能用几句话向我解释一下?

0 投票
2 回答
2414 浏览

django - 使用递归 WITH (Postgres 8.4) 而不是嵌套集的邻接列表树

我正在寻找一个 Django 树库并尽我所能避免嵌套集(它们是维护的噩梦)。

邻接列表模型的缺点一直是无法在不诉诸多个查询的情况下获取后代。Postgres 中的 WITH 子句似乎是解决这个问题的可靠方法。

有没有人看过任何关于 WITH vs. Nested Set 的性能报告?我认为嵌套集仍然会更快,但只要它们处于相同的复杂性级别,我就可以吞下 2 倍的性能差异。

Django-Treebeard 让我很感兴趣。有谁知道他们在 Postgres 下运行时是否实现了 WITH 子句?

有没有人根据 WITH 子句从嵌套集切换?

0 投票
2 回答
2294 浏览

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

在从 Django-Treebeard 节点进行子激光传输时,我收到一条非描述性的(或者至少我不知道如何在这种情况下解释)错误消息,并且不确定如何调试。我正在使用以下位置的安装说明:http ://code.tabo.pe/django-treebeard/src/tip/tbexample/ (见帖子末尾)。

我创建了 MP_Node 的子类并且 syncdb 工作。但是,将 models.py 代码加载到 shell 会产生“列表索引超出范围”错误 - 请参阅下面的代码和跟踪。

谢谢你的帮助。

Python 2.6.4、Django 1.1、树须 1.1:

Settings.py 中已安装的应用程序:

说明:
1.从 PyPi 1.1运行easy_install django-treebeard以安装
最新的 treebeard 版本。
如果您不喜欢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

0 投票
3 回答
2374 浏览

django - Django 中的 Treebeard 管理员

我已经在 Django 中设置了 Treebeard,一切似乎都很顺利。我尝试设置管理系统,我可以看到我的模型显示在管理界面中。但是,当我尝试使用管理界面添加新数据时,我的模板中出现以下错误。该代码仍然可以正常工作,我在我的数据库中进行了检查,数据似乎已正确插入。但是,视图似乎无法正确加载。知道是什么原因造成的吗?

我得到的例外是:

渲染时遇到异常:在 u'[{\'action_index\': 0, \'block\': , , , , , , ]>}, {\'block\': 中查找键 [request] 失败, , ]>, , , , , \n \'>, ]>, , ]>, , , , ]>, , , \n \'>, , , , , , , , , ]>, , ]> , \n \'>]>}, {\'cl\': , \'root_path\': None, \'actions_on_bottom\': False, \'title\': u\'选择要更改的专辑\', \'has_add_permission\': True, \'media\': , \'is_popup\': False, \'action_form\': , \'actions_on_top\': True, \'app_label\': \'gallery\'} , {\'MEDIA_URL\': \'\'}, {\'LANGUAGES\': ((\'ar\', \'阿拉伯语\'), (\'bn\', \'孟加拉语\'), (\'bg\', \'保加利亚语\'), (\'ca\', \'加泰罗尼亚语\'), (\'cs\', \'Czech\'), (\'cy\', \'Welsh\'), (\'da\', \'Danish\'), (\'de\' , \'German\'), (\'el\', \'Greek\'), (\'en\', \'English\'), (\'es\', \'Spanish\'), (\'et\', \'爱沙尼亚语\'), (\'es-ar\', \'阿根廷西班牙语\'), (\'eu\', \'巴斯克语\'), (\'fa\ ', \'波斯语\'), (\'fi\', \'芬兰语\'), (\'fr\', \'法语\'), (\'ga\', \'爱尔兰语\') , (\'gl\', \'加利西亚语\'), (\'hu\', \'匈牙利语\'), (\'he\', \'希伯来语\'), (\'hi\', \'印地语\'), (\'hr\', \'克罗地亚语\'), (\'is\', \'冰岛语\'), (\'it\', \'意大利语\'), ( \'ja\', \'日本\'), (\'ka\', \'格鲁吉亚\'), (\'ko\', \'韩国\'), (\'km\', \'高棉\'), (\' kn\', \'卡纳达语\'), (\'lv\', \'拉脱维亚语\'), (\'lt\', \'立陶宛语\'), (\'mk\', \'马其顿语\ '), (\'nl\', \'荷兰语\'), (\'no\', \'挪威语\'), (\'pl\', \'波兰语\'), (\'pt\ ', \'葡萄牙语\'), (\'pt-br\', \'巴西葡萄牙语\'), (\'ro\', \'罗马尼亚语\'), (\'ru\', \'俄语\'), (\'sk\', \'斯洛伐克语\'), (\'sl\', \'斯洛文尼亚语\'), (\'sr\', \'塞尔维亚语\'), (\'sv \', \'瑞典语\'), (\'ta\', \'泰米尔语\'), (\'te\', \'泰卢固语\'), (\'th\', \'泰语\' ),(\'tr\', \'土耳其语\'), (\'uk\', \'乌克兰语\'), (\'zh-cn\', \'简体中文\'), (\'zh- tw\', \'繁体中文\')), \'LANGUAGE_BIDI\': False, \'LANGUAGE_CODE\': \'en-us\'}, {}, {\'perms\': , \'messages \': [], \'用户\': }, {}]'

这发生在我点击 Django admin 中的保存按钮后。

这是我的 admin.py 实现:

0 投票
1 回答
603 浏览

python - 具有 django treebeard MP_Node Tree 的对象的多个版本(修订)

我正在使用物化路径树(由 django-treebeard 提供)来创建树结构(https://bitbucket.org/hoverhell/xmppforum/src/27207da4a061/snapboard/models.py#cl-363)。

我正在尝试实现(恢复)对象(发布)编辑,允许查看编辑对象的所有先前版本。

问题是,将所有旧版本存储在哪里会更好?

到目前为止,我有两个想法 - 1. 将它们存储在 Post 模式树中的某个特殊位置,或者 2. 为旧版本实现一个附加模型,可以(以某种方式)给定一个 MP_Node Post 对象来存储(保留它以前的也有修订)。但是这两个想法看起来都不是很好。另一个未完成的想法是将树和数据结构分开(引用树中的数据)。但我强烈怀疑这也会有很大的问题。

0 投票
2 回答
976 浏览

django - 是否可以集成 django-taggit 和 django-mptt / django-treebeard?

我正在开发一个需要标记不同类型内容的网站,这有利于使用 django-taggit。但是,如果标签在数据库中以它们的自然层次结构表示,那将是非常有益的,有利于使用 django-mptt 或 django-treebeard。

将 taggit 的通用标记功能与 mptt / treebeard 提供的树结构集成的最佳解决方案是什么?

0 投票
1 回答
371 浏览

django - 使用邮件标题信息在 django 中对电子邮件线程进行排序

我有一个存储电子邮件线程的 django 应用程序。当我从 mbox 解析原始电子邮件并将它们插入数据库时​​,我会包含电子邮件标头参数“message-id”和“in-reply-to”。message-id 是标识消息的唯一字符串,in-reply-to 标识给定消息响应的消息。

这是我的模型的消息部分:

目标是能够以类似于 gmail 的线程格式显示电子邮件对话。我打算只使用邮件标头中的 message-id(模型中的mesg_id)和回复中的(模型中的 in_reply_to)来跟踪邮件并进行线程处理。

在查看了 SO 和 google 之后,看起来我应该使用 django-treebeard 或 django-mptt 之类的库来执行此操作。当我查看这两个解决方案中的任何一个的文档时,看起来大多数模型都使用外键关系,这让我感到困惑。

鉴于上面的示例模型,我如何在我的应用程序中实现 django-treebeard 或 django-mptt?这可以使用 mesg_id 和 in_reply_to 字段吗?

0 投票
1 回答
630 浏览

django - 使用 django_treebeard 创建数据树(包括 node.id)

我正在尝试从树须模型中显示目录树。treebeard 教程中建议的带注释的列表方法工作正常,但我想在数据树中包含 id 信息。

dump_bulk() 包含我需要的所有信息,但作为 python 和 django 新手,我正在努力寻找一种方法来提取信息并将其显示在模板中。

我考虑过切换到 javascript,并解析 json 字符串,但 javascript 不喜欢字符串值之前的 u 前缀。有没有一种简单的方法可以避免 u 前缀?

我还考虑过基于 get_annotated_list() 编写一个包含 id 信息的函数。我假设应该可以重载 get_annotated_ 列表以便包含 id 信息,但我也不太确定如何解决这个问题。

任何和所有帮助我沿着学习曲线进步的建议都将不胜感激。

0 投票
1 回答
1264 浏览

sql - Django Treebeard 有效地使用引导程序显示树类别

如何遍历 MP_Node (django-treebeard) 类别的树并以租赁量的查询有效显示?我尝试查看文档,但我发现查询数量随着类别的增加而增加。

  1. 有没有一种方法可以限制查询数量以显示像 amazon.com 这样的菜单并以优化的方式获取所有类别?
  2. 我看到 treebeard 中的 dump_bulk() api 在单个查询中获取所有类别。建议使用它吗?如果不是为什么?它的实际用途在哪里?
  3. 使用 twitter-bootstrap nav 菜单的示例代码将不胜感激。

我希望减少查询的数量。将接受带有最少询问次数的解释的回答。