问题标签 [mptt]
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.
django - 使用 django-mptt 复制 FeinCMS 页面树更改子顺序
我正在尝试制作 FeinCMS 页面树的副本,该页面树使用 django-mptt 进行管理。我写了这个函数:
并使用
它通常可以工作,但是当我的页面树看起来像这样时:
结果是这样的:
从我逐步浏览 mptt 代码开始,魔法似乎发生在 mptt/managers.py/_inter_tree_move_and_close_gap() 中,由于某种原因,孙子的“lft”值发生了变化。在移动之前它们是C = 3,D = 5,之后它们是C = 5,D = 3。
这解释了为什么 D 在 C 之前排序,但我不知道为什么这些值会被切换。有什么想法吗?
php - PHP需要在不修改MySql数据库的情况下显示MPTT
我有一个 MPTT 组织的 MySql 数据库,我需要显示它,没有级别限制,我无法更改数据库,我试过http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql /,但仍然让我有些头疼。
python - django-mptt 没有正确地将数据链接在一起
嘿,我正在使用MPTT从包含对话的模型中创建一些树状数据,我希望它们按“投票”字段排序。
该模型目前看起来像这样,非常基本。
如您所见,我们有一个消息字段,以及链接到 Thread 模型的父 FK 和一个投票。
在我看来,我有这个
然后在我的模板中
但是,输出的列表是所有线程的列表。它们都没有联系在一起。
有任何想法吗?
php - 按路径查询 MPTT 样式表的最有效方法是什么?
我有一个 MySQL 表,它使用 MPTT 方法存储分层数据。该表还有一列,我在其中为每一行存储一个短字符串标识符(slug)。
当给定由这些 slug 组成的路径时,我希望能够查询表以找到正确的行。即给定路径foo/bar
,我想以最有效的方式找到它所代表的行。
我可以在单个 SQL 查询中执行此操作吗?如果不是,将多个查询串在一起以获得正确结果的最有效方法是什么?我在我的应用程序中使用 PHP,如果这不能完全通过 SQL 查询来完成,这可能是相关的。
mysql - (MySQL) MPTT / 嵌套集模型上的聚合函数
因此,我使用 MySQL 并将我的类别结构存储在基于嵌套集/修改的预排序树遍历模型的表名“nested_category”中,该表具有以下字段:
category_id
, name
, lft
, rgt
,published
published
是 1 或 0...如果是 1,那么该类别将显示在实时站点上。如果为 0,则不会显示在实时站点上,更重要的是,该未发布类别的任何子项也不会显示在实时站点上。
我在编写查询以列出所有具有 的类别published=1
并忽略作为具有 的类别的后代的所有类别时遇到问题published=0
。
目前我正在使用:
当父母“未发布”时,我真的无法弄清楚如何让它忽略“子”类别。
我还试图将其链接到我的“new_products”表,该表具有以下字段:product_id
, name
, stock
, price
, category_id
,以便我可以编写一个查询来选择所有具有published=1
“已发布”类别的产品。我已经做到了这一点:
由于上面的查询使用我的第一个查询,它不会返回任何“未发布”类别或产品,但它没有考虑“已发布”类别是“未发布”类别的后代。希望这是有道理的!
python - django-mptt get_descendants 获取节点列表
我试图获取descendants(include_self=True)
的不是一个节点,而是一个节点列表(一个查询集)。这应该是一个 SQL 查询。
示例(实际上不起作用:)
我现在唯一的想法是遍历 some_nodes 并为每个节点运行 get_descendants() - 但这是一个糟糕的解决方案(大量的 SQL 查询)。
如果没有干净的方法可以通过 Django ORM 来实现,你可以为我提供一个自定义 SQL 来代替运行吗?在这里你可以假设我有一个 Node 的 pk 列表。
编辑:如果这有帮助 - 我所有的“some_nodes”都放在同一个父目录中,并且在树中具有相同的“级别”。
python - 检索 mptt 查询集祖先查询集的高效函数
有没有人有一个有效的算法来检索一个 mptt 查询集的所有祖先?到目前为止,我能想到的最好的事情是这样的:
这种方法有两个问题:
- 如果有不相邻的分支(即它实际上不起作用),它会失败
- 它的效率非常低,因为它最终
number_of_trees*number_of_levels
在最终查询中包含子句,这些子句会很快变得非常大
我愿意在其他地方缓存祖先,但我想不出一种有效的方法。我考虑添加一个以逗号分隔的祖先 id 列表的字段,然后在GROUP_CONCAT
额外的内部执行一个(我在 MySQL 中),但我认为这可能会变得巨大/缓慢。
php - MySQL、PHP、MPTT:按重量/成本/菜单顺序对子项进行排序
我想在“page_menu_order”行上对结果进行排序,但在同一深度内。
所以孩子们保持层次结构,但在他们的深度内,他们按成本/价格/或page_menu_order排序。
php - 如何仅显示具有 CakePHP 树行为的产品类别?
我正在使用 CakePHP 的树行为,并且需要知道类别中是否有任何产品或其子类别,因为我不想查看空类别。
我想做这样的事情:
这将是取消设置不需要的数组维度的起点。在数据库中,分类有很多产品。
这个问题的最佳解决方案是什么?是否可以使用 category_id 在 foreach 循环中避免 Product->find?