django模型:具有递归关系

use*_*652 1 django-models

我如何正确地建模如下所示的递归关系?

class A(models.Model):
    previous_A = models.OneToOneField(A)
Run Code Online (Sandbox Code Playgroud)

Jos*_*mit 6

使用 Django,您可以按如下方式建模父子关系:

\n\n
class Person(models.Model):\n    name = models.CharField(max_length=128)\n    parent = models.ForeignKey(\'self\', null=True, related_name=\'children\')\n
Run Code Online (Sandbox Code Playgroud)\n\n

引用ForeignKey 文档

\n\n
\n

要创建递归关系 \xe2\x80\x93 与其自身具有多对一\n 关系的对象 \xe2\x80\x93 使用models.ForeignKey(\'self\')

\n
\n\n

PS 通过“自反关系”,我假设您指的是一种递归关联,它将单个类类型(担任一个角色)与其自身(担任另一个角色)连接起来;即亲子关系。

\n

  • @astrocybernaute 您需要创建 2 个“ManyToManyField”关系。一个称为“manages”,另一个称为“management_by”。这将产生两个中间表来启用您所描述的关系。“manages”将一个人与他“管理”的一对多人联系起来。`management_by` 将一个人与他可能管理他的一对多经理联系起来。如果您将其作为问题发布,请给我链接,我将能够更好地格式化我的答案。 (2认同)