gpt4 book ai didi

django - 是否有可能达到 'measure' 的 django 模型实例的嵌套级别

转载 作者:行者123 更新时间:2023-12-04 04:13:11 25 4
gpt4 key购买 nike

我有一个 Comment 模型,它有一个 Parent 字段,它本身是一个 ForeignKey:所以用户可以对评论等进行评论。

特定项目是否有可能获得其嵌套级别:这是直到最后一个没有父项(但 post 字段非空)的父项的数量?

我的意思是只使用递归函数相对容易,但我想知道是否有使用 Django 查询的更高效的工具?

最佳答案

它实际上更像是一个关系模型问题,而不是 Djang 问题。邻接表模式(FK to parent record)是SQL中表示自引用树结构的最简单和最明显的wau,对于写操作来说相当快,但局限性是你无法获得深度信息或树子集没有递归(SQL 本身不支持递归)。

树还有另外两种 SQL 模式:

1/实体化路径,您在树中存储项目路径的字符串表示(然后您需要解析该路径以获取父项、子项或深度信息)

2/嵌套集 - 也称为修改后的预序树遍历 (MPTT) - 这相当复杂,所以我什至不会在这里尝试解释它(但有很多关于该主题的文章),并且相当在单个查询中获取任意深度的树子集和深度信息的效率(当然,将新节点添加到树时效率要低得多,但除非您的写入操作多于读取操作并且需要每秒重新组织一棵巨大的树,否则它是实际上不是问题)。

好消息是,有现有的、维护的、运行良好的第 3 部分 django 应用程序实现了最后一个模式,最常用的是 django-mptt。

有关这些模式的有用介绍性文章(在 Django 项目的上下文中)可以找到 here

关于django - 是否有可能达到 'measure' 的 django 模型实例的嵌套级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61313876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com