【发布时间】:2013-08-04 14:31:25
【问题描述】:
我将如何正确建模如下所示的递归关系?
class A(models.Model):
previous_A = models.OneToOneField(A)
【问题讨论】:
标签: django-models
我将如何正确建模如下所示的递归关系?
class A(models.Model):
previous_A = models.OneToOneField(A)
【问题讨论】:
标签: django-models
使用 Django,您可以对父子关系进行如下建模:
class Person(models.Model):
name = models.CharField(max_length=128)
parent = models.ForeignKey('self', null=True, related_name='children')
引用ForeignKeydocs:
创建递归关系——一个具有多对一的对象 与自身的关系——使用
models.ForeignKey('self')。
附:通过“自反关系”,我假设您指的是递归关联,它将单个类类型(服务于一个角色)连接到自身(服务于另一个角色);即父子关系。
【讨论】:
ManyToManyField 关系。一个叫manages,另一个叫managed_by。这将产生两个中间表来启用您描述的关系。 manages 会将 Person 链接到他管理的一对多 Person。 managed_by 将一个人链接到他可能管理他的一对多经理。如果您将此作为问题发布,请给我链接,我将能够更好地格式化我的答案。