我有一个名为“Family”的Django对象。 “家庭”有变量“children”,这是一个名为“Child”的类的多对多字段。
如果我有一个“Child”对象,有没有办法得到孩子所属的家庭对象?
Child
some more fields...
Family
children = models.ManyToManyField(Child)
some more fields...
答案 0 :(得分:4)
在这种情况下,Django会自动为您创建反向关系,因此对于Child
模型的实例,您可以找到子项所属的所有Family实例:
c = Child.objects.get(id=1)
c.family_set.all() # gives you a list of Families
但是,由于孩子不太可能属于多个家庭,因此这不是真正的多对多情况。您可能希望考虑在子对象上建模关系:
class Family(models.Model):
pass # your fields here
class Child(models.Model):
family = models.ForeignKey(Family)
通过这种方式,您可以使用mychild.family
为孩子建立家庭,并使用django的自动反向关系myfamily.child_set.all()
获取所有孩子。
答案 1 :(得分:2)
请参阅http://docs.djangoproject.com/en/dev/topics/db/queries/#many-to-many-relationships
语法为child.family_set.all()
,但可以使用related_name
参数进行更改。