Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有可能';测量';django模型实例的嵌套级别_Django - Fatal编程技术网

有没有可能';测量';django模型实例的嵌套级别

有没有可能';测量';django模型实例的嵌套级别,django,Django,我有一个Comment模型,它有一个Parent字段,它本身就是一个ForeignKey:因此用户可以对评论等进行评论 某个特定项目是否可能获得其嵌套级别:在最后一个项目之前,有多少个没有父项的父项(但有一个post字段非空) 我的意思是,只使用递归函数相对容易,但我想知道是否有更有效的工具使用Django查询?这实际上更像是一个关系模型问题,而不是Djang问题。邻接列表模式(FK到父记录)是在SQL中表示自引用树结构的最简单和最明显的wau,它对于写操作来说非常快,但其局限性是,如果没有递归

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

某个特定项目是否可能获得其嵌套级别:在最后一个项目之前,有多少个没有父项的父项(但有一个
post
字段非空)


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

这实际上更像是一个关系模型问题,而不是Djang问题。邻接列表模式(FK到父记录)是在SQL中表示自引用树结构的最简单和最明显的wau,它对于写操作来说非常快,但其局限性是,如果没有递归(SQL中不支持递归),就无法获得深度信息或树子集

树还有两种其他SQL模式:

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

2/嵌套集-也称为修改的前序树遍历(MPTT)-这相当复杂,因此我在这里甚至不尝试解释它(但有相当多的关于此主题的文章),并且对于在单个查询中获取任意深度的树子集和深度信息非常有效(当然,在向树中添加新节点时效率要低得多,但除非您有更多的写操作而不是读操作,并且需要每秒重新组织一个完整的巨树,否则实际上这不是问题)

好消息是,现有的、维护良好的第三部分django应用程序实现了最后一种模式,最常用的是django mptt

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