使用反向foreignkey查找的Django ListView

2024-04-24 16:09:21 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有如下代码:

Person

Email
  FK(Person)

Phone
  FK(Person)

Address
  FK(Person)

我想显示一个包含每个人的ListView,以及每个人的电话号码、电子邮件和地址,all()[0]就足够了,我该如何创建一个查询集来传入ListView?在

谢谢


Tags: 代码address电子邮件email地址phone电话号码all
1条回答
网友
1楼 · 发布于 2024-04-24 16:09:21

关系是一对一还是一对多?如果是一对一,则可以使用Django的aggregation特性在单个查询中获取所有引用。(编辑:抱歉,不是参考文献,只有他们的PK)例如:

from django.db.models import Min
Person.objects.all().annotate(email=Min('email'), phone=Min('phone'), address=Min('address'))

我不知道它是否能很好地与ListView集成,不过。。。在这种情况下,也许使用OneToOneField可以工作(即使没有聚合),我不确定。在

如果关系是一对多,恐怕您无法在一个查询中做到这一点。您可能已经知道,给定一个Person对象,您可以使用_set后缀email_setphone_set和{}来获得相关模型。但是要访问它们,您需要其他查询(更多的数据库命中)。在

相关问题 更多 >