如果我的代码如下:
Person
Email
FK(Person)
Phone
FK(Person)
Address
FK(Person)
我想要显示每个人的ListView以及每个人的电话号码,电子邮件和地址,all()[0]已经足够好了,我将如何创建一个QuerySet传递到ListView?< / p>
由于
答案 0 :(得分:0)
这些关系是一对一还是一对多?如果一对一,您可以使用Django的aggregation功能在单个查询中获取所有引用。 (编辑:抱歉,不是引用,只是他们的pks)例如:
from django.db.models import Min
Person.objects.all().annotate(email=Min('email'), phone=Min('phone'), address=Min('address'))
我不知道它是否能与ListView很好地集成,但是......在这种情况下使用OneToOneField可能会起作用(即使没有聚合),我也不确定。
如果关系是一对多关系,我恐怕你无法在一个查询中做到这一点。您可能已经知道,给定Person
对象,您可以使用_set
后缀获取相关模型:email_set
,phone_set
和address_set
。但要访问它们,您需要其他查询(更多数据库命中)。