django - 从 django 外键连接模型中查询查询集
问题描述
我有一个如下模型:
class Flow(models.Model):
flow_type_choices = (('Static', 'Static'), ('Transit', 'Transit'), ('Circuit', 'Circuit'), ('Close', 'Close'))
flow_name = models.CharField(max_length=500, default=0)
flow_info = models.CharField(max_length=500, default=0)
flow_type = models.CharField(max_length=500, default=0, choices=flow_type_choices)
flow_days = models.IntegerField(default=0)
sender_client = models.ForeignKey(Client, on_delete=models.CASCADE)
receiver_client = models.ForeignKey(ReceiverClient, on_delete=models.CASCADE)
我正在尝试将queryset
ofreceiver_client
附加到特定的sender client
为此,我尝试了以下方法:
items = list(Flow.objects.filter(sender_client=request.user.pk).
values_list('receiver_client', flat=True).distinct())
print("items", items)
rc = ReceiverClient.objects.filter(pk__in = items)
我得到:
items <QuerySet [11, 8, 7, 18, 4, 6, 3]>
如何获取接收者客户端的查询集而不是pk
?
解决方案
ReceiverClient
您可以通过从到一直遵循关系在单个查询中获取此数据Client
ReceiverClient.objects.filter(flow__sender_client=client)
推荐阅读
- mongodb - 使用 PySpark 从 MongoDB 到 Elasticsearch
- java - TextView 未显示在按钮上
- python - 傅里叶变换高通圆形滤波器直觉
- reactjs - NextJs - 禁止外部同步脚本
- google-apps-script - Google表格A列中的表格数组:A通过INDIRECT,Arrayformula
- c++ - 在抛出 'std::out_of_range' 的实例后调用终止 what(): basic_string::substr: __pos (即 1452) > this->size() (即 0)
- c - puts() 命令和指针:不打印
- sql - Oracle SQL 挑战子查询(聚合、分组、计数)
- google-tag-manager - 如何在 GTM + GA4 中正确跟踪测试 (UAT) 和生产数据
- windows - 远程执行powershell命令后台运行