use*_*087 5 django many-to-many django-models
Run Code Online (Sandbox Code Playgroud)class c(models.Model): f = models.ManyToManyField( 'self', blank=True, null=True, related_name='child_set' )
我可以 :
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)
对于ManyToManyField引用 s self,不会创建反向关系。这是因为它没有用处——它将包含所有引用自身的关系——这就是前向关系的作用。
您会发现无论您说什么,它related_name都会被设置为%(field)s_rel_+(尾随+阻止创建关系)。
所以答案是没有,child_set因为你可以使用f.
| 归档时间: |
|
| 查看次数: |
1594 次 |
| 最近记录: |