Django:如何向后跟踪 ManyToMany('self')

use*_*087 5 django many-to-many django-models

class c(models.Model):
    f = models.ManyToManyField(
        'self', 
        blank=True, 
        null=True, 
        related_name='child_set'
    )
Run Code Online (Sandbox Code Playgroud)

我可以 :

 c.objects.get(pk="1").f
Run Code Online (Sandbox Code Playgroud)

但我如何通过“_set”呢?

 c.objects.get(pk="1").child_set
Run Code Online (Sandbox Code Playgroud)

不起作用

我需要这个:

{name:A,parent:[]}
{name:B,parent:[A]}
{name:C,parent:[A,B]}

C.parent.all() == [A,B]
A.parent_set.all() == [B,C]
Run Code Online (Sandbox Code Playgroud)

Dan*_*elB 1

对于ManyToManyField引用 s self,不会创建反向关系。这是因为它没有用处——它将包含所有引用自身的关系——这就是前向关系的作用。

您会发现无论您说什么,它related_name都会被设置为%(field)s_rel_+(尾随+阻止创建关系)。

所以答案是没有,child_set因为你可以使用f.