2024-04-24 16:09:21 发布
网友
如果我有如下代码:
Person Email FK(Person) Phone FK(Person) Address FK(Person)
我想显示一个包含每个人的ListView,以及每个人的电话号码、电子邮件和地址,all()[0]就足够了,我该如何创建一个查询集来传入ListView?在
谢谢
关系是一对一还是一对多?如果是一对一,则可以使用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_set、phone_set和{}来获得相关模型。但是要访问它们,您需要其他查询(更多的数据库命中)。在
Person
_set
email_set
phone_set
关系是一对一还是一对多?如果是一对一,则可以使用Django的aggregation特性在单个查询中获取所有
引用。(编辑:抱歉,不是参考文献,只有他们的PK)例如:我不知道它是否能很好地与ListView集成,不过。。。在这种情况下,也许使用OneToOneField可以工作(即使没有聚合),我不确定。在
如果关系是一对多,恐怕您无法在一个查询中做到这一点。您可能已经知道,给定一个}来获得相关模型。但是要访问它们,您需要其他查询(更多的数据库命中)。在
Person
对象,您可以使用_set
后缀email_set
、phone_set
和{相关问题 更多 >
编程相关推荐