【发布时间】:2018-06-28 15:41:44
【问题描述】:
我已经知道,我可以在同一个模型中实现 ForeignKey 父子关系,这允许创建与 1 个父级 = 多个子级的关系。但是我怎样才能在同一个模型中完成多对多关系呢?此时我编写并测试了这个:
class Person(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
parents = models.ManyToManyField(
'self', blank=True
)
它确实有效,但不像我预期的那样。它的作用是:
john = Person.objects.get(id=1)
sam = Person.objects.get(id=2)
>>> john.parents.all()
<QuerySet [<Person: Alex>, <Person: Peter>, <Person: Sam>]>
>>> sam.parents.all()
<QuerySet [<Person: John>]>
如您所见,Sam 应该是 John 的孩子,而不是他的孩子和父母。我想要的是在检索 sam.parents.all() 时获取 John,但在检索 john.parents.all() 时不获取 Sam
有没有办法完成我想要的?或者这至少不适用于这个逻辑?我是否必须使用同一个应用创建第二个单独的模型?
【问题讨论】:
标签: python django relationship