首页 > 解决方案 > 从 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)

我正在尝试将querysetofreceiver_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

标签: django

解决方案


ReceiverClient您可以通过从到一直遵循关系在单个查询中获取此数据Client

ReceiverClient.objects.filter(flow__sender_client=client)

推荐阅读