【发布时间】:2017-11-11 12:43:40
【问题描述】:
所以我有模型:
class Parent(models.Model):
name = models.CharField(max_length=100)
class Child(models.Model):
parent = models.ForeignKey('Parent', on_delete=models.CASCADE)
name = models.CharField(max_length=100)
class Grandchild(models.Model):
parent = models.ForeignKey('Child', on_delete=models.CASCADE)
name = models.CharField(max_length=100)
class ParentPhoto(models.Model):
person = models.ForeignKey('Parent', on_delete=models.CASCADE)
image = models.ImageField()
class ChildPhoto(models.Model):
person = models.ForeignKey('Child', on_delete=models.CASCADE)
image = models.ImageField()
class GrandchildPhoto(models.Model):
person = models.ForeignKey('Grandchild', on_delete=models.CASCADE)
image = models.ImageField()
请忽略糟糕的数据库/模型设计(这只是对我复杂的现实应用程序的类比)。
我想为Parent 添加一个RelatedManager,可能命名为family_photo_set,这将返回一个Queryset,其中包含他自己的所有Photos、他的Children 和所有Children'Grandchildren。我该如何做到这一点?一个简单的RelatedManager 让我只能以某种方式过滤Parents' parentphoto_set,而不是真正添加其他家庭成员。
【问题讨论】:
-
你是停留在三层深度,还是可以有任意数量的层?
-
@WillemVanOnsem - 是的,我停在三个级别。
标签: django django-orm