在Django中建模递归关系的正确方法

Yuv*_*dam 5 django django-models

我的应用程序有两种节点类型:一个可以容纳递归子节点节点.可以把它想象成SO中的后评论系统,但评论可以是递归的:

parent_1
  child_11
  child_12
    child_121
  child_13
parent_2
  child_21
    child_211
      child_2111
Run Code Online (Sandbox Code Playgroud)

需要注意的是,父节点具有与子节点不同的属性和行为.

除非递归我会有以下模型:

class Parent(models.Model):
    # fields ...

class Child(models.Model):
    parent = models.ForeignKey(Parent)
    # other fields ...
Run Code Online (Sandbox Code Playgroud)

但这种递归使这种情况复杂化.在Django中建立这种关系的正确(并且可能是最有效的)方法是什么?

Dan*_*man 11

使用django-mpttdjango-treebeard.

  • @Yuval,这是在数据库中存储分层数据的效率问题.MPTT是当今使用的更常用的方法之一.丹尼尔提到的两个项目都有关于这个主题的更多信息以及更多信息的链接.以下是链接文章之一:http://articles.sitepoint.com/print/hierarchical-data-database (2认同)