ForeignKey字段可以在Django中链接不同类型的模型吗?

时间:2016-10-23 12:43:18

标签: django foreign-keys models

我需要使用Django来实现像树这样的东西,这个树中的节点有一个父节点,还有很多子节点。问题是节点的类型不一样,它们属于不同的模型,尽管它们都是所有都有一个名为parent的外键,但在其他字段和方法中有所不同,每个节点的父节点可能是任何其他类型的节点。对于一个节点,我想知道谁是它的父节点,谁是它的子节点。

我试过了:

class BaseNode(models.Model):
    parent = models.ForeignKey("self", blank=True, null=True, related_name="child_set")

    def add_child(self, node):
        self.child_set.add(node)
        self.save()

    def get_children(self, node):
        return self.child_set.all()

    class Meta:
        abstract = True

class ANode(BaseNode):
    pass


class BNode(BaseNode):
    pass

执行此操作时:

a = ANode()
b = BNode()
a.add_child(b)

有一个错误:

  

TypeError:预期的'ANode'实例,得到< BNode:BNode对象>

0 个答案:

没有答案