Skip to main content
 首页 » 编程设计

python之如何在一个模型中指定父子关系

2025年05月04日12freeliver54

例如我有以下代码:

class FamilyMember(models.Model): 
    user = models.OneToOneField(User) 

我有以下情况:

a1 = FamilyMember.objects.get(id=1) 
a1.first_name = 'John' 
a1.last_name = 'Smith' 
(a1 is a parent of a2) 
 
a2 = FamilyMember.objects.get(id=2) 
a2.first_name = 'Mark' 
a2.last_name = 'Smith' 
(a2 is a child of a1 and parent of a3 in the same time) 
 
a3 = FamilyMember.objects.get(id=3) 
a3.first_name = 'Jason' 
a3.last_name = 'Smith' 
(a3 is a child of a2) 

我怎样才能在一个模型中实现这种关系?

请您参考如下方法:

您可以使用一个简单的 ForeignKey to self 来指示父级:

parent = models.ForeignKey('self', blank=True, null=True, related_name='children') 

现在您可以执行 a2.parent = a1,并且会自动获得对 a1.children.all() 的访问权限。