[英]django how to group on ManyToMany relationship dynamically
我有一个简单的请求,但是我一直在碰壁,但我并没有因此而变得更聪明。
我正在使用Django 1.10。 我要做的是获取按家庭领域分组的成员列表
这些模型如下所示:
class Family(models.Model):
family_name = models.CharField(max_length=200)
class Member(models.Model):
name = models.OneToOneField(User)
family = models.ManyToManyField(Family,blank=True,related_name='members')
所以我可以设置我的观点来使用
members = Member.objects.order_by('family')
要么
members = Family.objects.order_by('family_name')
这显然可以容纳我的成员或家人,但不能同时容纳这两个成员。 我将如何获得会员名称和他们的家人,然后按它分组?
我正在寻找的输出示例是:
家庭1
家庭2
任何帮助,将不胜感激。
第一个怎么了? 如果要按家人的name
订购,请执行以下操作:
members = Member.objects.order_by('family__family_name')
这些成员都可以通过.family
获得.family
。 如果要在遍历这些成员并访问它们的族时保存数据库查询,则可以添加select_related
:
members = Member.objects.order_by('family__family_name').select_related('family')
另一方面,如果您真的想要家庭,然后与他们的成员进行交流,请执行以下操作:
families = Family.objects.order_by('family_name').prefetch_related('members')
for fam in families:
// do sth. with family
for mem in fam.members.all():
// do sth. with member
无论有多少族或成员, prefetch_related都将仅使用2个数据库查询来运行该查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.