django - Django,从我的 QuerySet 中的连接中添加字段
问题描述
- 我有一个带有 FK 用户的模型 Exec(django 的那个)
- 我有一个带有 FK 用户的模型 Profil(django 的那个)
我有一个 Exec 的 QuerySet,我想通过 FK 与 Profil “加入”来从 Profil 中获取一个字段。我怎样才能做到这一点?
目标是拥有类似exec.profil_info或exec.profil.info
解决方案
您可以通过使用 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 来控制排序)。
推荐阅读
- android - 如何在 ImageView 中显示 BitmapFactory 由字节数组制作的位图
- ios - NSLayoutConstraint 常量更改后 UIView 不会刷新
- ios - IOS的UIAnimation中的异常行为
- python - 在 Python 枚举中表示复杂对象
- java - 有没有办法在数组中命名每个 JSONObject?
- c# - 使用c#全局获取windows机器键盘光标(插入位置)位置
- java - (string == null) 和 (string.length() == 0) 之间的区别?
- android - Android Toast 对象的实用程序类
- gradle - 在 gradle 中添加子项目依赖项很奇怪,IntelliJ
- php - PHP 邮件在我的 Web 服务器中不起作用