问题标签 [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 投票
1 回答
419 浏览

django - 使用 django-treebeard 建模多态树

我似乎找不到将各种多态类型的节点添加到同一棵树的方法。基本上,我想我想要一棵树,其节点要么是 Company 要么是 Region,两者都继承自 HierarchyNode,而 HierarchyNode 继承自 MP_Node

添加公司根节点很简单

但我似乎无法弄清楚如何将区域添加为c1

有没有办法做到这一点?API 是否不允许这样做,因为这是一个坏主意?有没有更合适的方法来模拟这个概念?或者,我想我可以有一个 HierarchyNodes 树,它与 Company/Region 类型具有一对一的关系。

0 投票
1 回答
1468 浏览

python - 如何使用 django-treebeard 构建站点地图?

我已经设置了一个 django-treebeard 模型,它有子节点,什么没有。我现在如何在我的模板中显示它?这就是我到目前为止所拥有的。

我的模型:

我的观点:

我的模板:

这现在正在做什么,显然只是列出节点及其子节点而没有任何缩进。如何在我的模板中像树一样列出它?

0 投票
2 回答
1544 浏览

python - 如何使用 django-cms Python api 创建页面?

我正在尝试编写一个 CMS 内容迁移脚本,它将为 django-cms 创建我们的页面。然而,即使默认安装了 Django-cms,Django-treebeard 仍然会引发异常,我不清楚为什么。

例如,当执行此行时:

我的脚本总是在treebeard的mp_tree.py(v 4.1.0)中失败(第307-8行):

有没有人有一个关于如何使用 cms.api.create_page() 方法的非常简单的例子?

http://docs.django-cms.org/en/release-3.4.x/reference/api_references.html?highlight=create_page#cms.api.create_page

Pip freeze 显示这些版本:

0 投票
1 回答
589 浏览

wagtail - wagtail '具有此路径的页面已存在。' 尝试手动创建页面时出错

作为数据导入的一部分,我有一些代码可以创建自定义页面对象:

有时会引发:

一些调试代码确实表明存在另一个具有相同路径的页面:

为什么会这样?

尝试手动增加竞争路径以设置新路径也不起作用:

有趣的是,如果我跳过这些异常并继续导入,当我打印出这些路径时,它们似乎遵循类似的模式:

这可能是相关的吗?

0 投票
1 回答
455 浏览

django - Django-taggit 与 Django-treebeard 或合适的分类应用程序

环境: Python 2.7.10 Django 1.11.3

问题 我需要一个分类系统而不仅仅是标签。例如:

  • 艺术 > 数码插画
  • 编程 > 网站 > 代码大战
  • 编程 > 网站 > Hackerrank
  • 编程 > 网站 > 代码战 > 街机 > 一级
  • 编程 > 代码挑战

环顾四周,我在 StackOverflow 中找到了这篇文章,这让我看到了这篇文。

这导致我得到以下代码:

楷模

行政

问题是当我去管理员添加分类时,我得到以下字段:

  • 姓名
  • 蛞蝓
  • 小路
  • 深度
  • 数子

最后两个不是手动输入的,所以树胡子的文档说。

不要直接更改 path、depth 或 numchild 的值:改用其中一种包含的方法。将这些值视为只读。

我继续尝试自己输入它们,出于好奇/愚蠢,树坏了。所以我不得不使用这个 hack 来修复它:

感谢用户“jrief”的黑客攻击

另一个问题是我无法再通过管理员访问我的Post模型。我收到以下错误:

/admin/main/post 处的 FieldDoesNotExist 帖子没有属性“content_object”

请记住,这是我的第一个 Django 项目和应用程序。感谢您可能有的任何想法或分类法的良好 django 应用程序,或关于如何实现我需要的分类法的想法。

0 投票
0 回答
182 浏览

python - Django 查询以迭代地使用另一个查询集值的输出

我有一个组织模型,对于每个组织,我必须找到它的父组织的 ID。

我可以使用这段代码获取单个组织的父组织的 ID,

但是我希望每个组织都相同(对于每个组织,我希望它是父 ID)。如果我在 for 循环中这样做,则应该生成 n 个数据库查询。有没有办法在单个数据库查询中获取输出?

models.py

0 投票
1 回答
1753 浏览

django - django-treebeard物化路径节点的动态排序

我有一个基于django-oscar(and ) 的项目,它使用该模块django-cms在具有不同SITE_IDs 的多个域上运行。django.contrib.sites该项目已经富有成效,我不能再更改类别 slug - 我希望避免将整个代码切换到嵌套集树或相邻树 - 为了您更好地理解:初始要求不想要不同的类别排序对于每个域,所以我只使用 Oscars 默认类别实现。

但是由于 Oscars 类别模型/管理器基于物化路径树实现,因此我必须考虑与通常的 Django 更改默认排序方式的一些差异django-treebeard

给定模型中的这两个额外字段(继承自django-oscars AbstractCategory)

我不能简单地将排序添加到元类中,例如:

首先,它将忽略该指令,因为treebeardsMP_NodeManager.get_queryset()不尊重自定义排序 - 对于 MP_Tree 逻辑,它必须依赖于插入时生成的排序(存储在 中path),因此这种方法将违背 MP_Tree 本身的目的。

我也看过node_order_by- 但如文档中所述:

node_order_by启用时节点的顺序不正确。在节点插入时强制执行排序,因此如果在node_order_by插入节点后修改了一个属性,则树排序将不一致。

但同样在具有不同类别排序的多个域上,这是没有用的。我能想到的唯一方法是覆盖MP_NodeManager类:

但是这种方法显然是错误的,因为 MP_Tree 依赖于path排序来生成正确的树 - 我的想法是遍历所有条目,比较path,忽略最后一部分并根据排序order_site_{id}并将其重新转换为QuerySet.

我什至不确定这是否可能,并且我想避免去那里,所以我的问题是:有没有办法在 ORM 语句链中反映这种逻辑,以便我可以继续使用本机QuerySet

0 投票
0 回答
518 浏览

python - 在尝试序列化模型的子节点和父节点时,我得到 RecursionError

我正在尝试制作一个支持任意数量回复的评论模型。我正在使用 Django Rest Framework,而对于评论树,我正在使用 django-treebeard。

这是我的模型代码:

这是我的观点,很简单:

这是我的序列化器:

当我在 ipython shell 中运行测试时,我收到一条错误消息,指出 RecursionError: maximum recursion depth exceeded while calling a Python object它最终指向序列化程序中的这些行:

问题是,我如何摆脱这个错误?

编辑:我忘了说的是,当我尝试只包含子字段或父字段并评论另一个字段时,它会起作用。但是当我同时尝试它们时,它不起作用。

0 投票
1 回答
615 浏览

django-treebeard - 在 django-treebeard 中,如何为兄弟姐妹添加孩子

在我的项目中,我应该使用树结构。在看到 treebeard 的文档后,我认为它非常合适。感谢您提供清晰的文档。在文档中,提供了示例

在上面的代码中,如果我想为兄弟姐妹添加孩子(例如:硬盘),我该怎么做

0 投票
0 回答
87 浏览

django - 在保存之前检查 django-treebeard ORM 中的树修改

我想仔细检查我是否正确解释了django-treebeard文档的以下部分:

django-treebeard 使用 Django 原始 SQL 查询进行一些写入操作,原始查询不会更新 ORM 中的对象,因为它被绕过了。

正因为如此,如果您在内存中有一个节点并计划在修改树(添加/删除/移动节点)后使用它,则需要重新加载它。

以下是我的理解:

如果我从数据库中加载了一个节点并在内存中处理它,我必须在保存之前使用refresh_from_db()。此外,如果树在 refresh_from_db 和保存之间被修改,我应该将这两个调用包装在一个原子事务中。

这个对吗?