问题描述
|
我有一个名为\“ Family \”的Django对象。 \“ Family \”具有变量\“ children \”,这是称为\“ Child \”的类的多对多字段。
如果我有一个\“ Child \”对象,有没有办法获得该孩子所属的Family对象?
Child
some more fields...
Family
children = models.ManyToManyField(Child)
some more fields...
解决方法
在这种情况下,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()
来获得一个家庭中的所有孩子。
,参见http://docs.djangoproject.com/en/dev/topics/db/queries/#many-to-many-relationships
语法为child.family_set.all()
,但可以使用related_name
参数进行更改。