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

时间:2010-03-20 14:08:04

标签: django django-models

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

parent_1
  child_11
  child_12
    child_121
  child_13
parent_2
  child_21
    child_211
      child_2111

重要的是要注意父节点具有与子节点不同的属性和行为。

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

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

class Child(models.Model):
    parent = models.ForeignKey(Parent)
    # other fields ...

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

2 个答案:

答案 0 :(得分:11)

答案 1 :(得分:1)

你能使用Generic Relation并只在save()方法中添加验证(或在信号或表格验证中),以确保对象是一个或另一个的实例吗?