首页 > 解决方案 > Django,从我的 QuerySet 中的连接中添加字段

问题描述

我有一个 Exec 的 QuerySet,我想通过 FK 与 Profil “加入”来从 Profil 中获取一个字段。我怎样才能做到这一点?

目标是拥有类似exec.profil_infoexec.profil.info

标签: djangodjango-models

解决方案


您可以通过使用 OuterRef 和 Subquery https://docs.djangoproject.com/en/2.0/ref/models/expressions/#subquery-expressions来实现此“加入” 。

对于你的例子

profiles = Profil.objects.filter(user=OuterRef('user'))
subquery  = Subquery(profiles.values('your_field_here')[:1])
execs = Exec.objects.annotate(anything=subquery)

这将为您提供表中的第一个匹配行Profil(您可以通过将 order_by 添加到配置文件 QuerySet 来控制排序)。


推荐阅读