Django rest framework 如何序列化查询集的间接关系?

Django rest framework 如何序列化查询集的间接关系?,django-rest-framework,Django Rest Framework,我构建了一个Django REST应用程序,作为iOS项目的后端API。在我的对象模型中,我使用“订阅”将“用户”对象与“工作区”对象连接起来。以下是my models.py简化版的一部分: class User(models.Model): # some property fields class Workspace(models.Model): # some property fields class Subscription(models.Model): # s

我构建了一个Django REST应用程序,作为iOS项目的后端API。在我的对象模型中,我使用“订阅”将“用户”对象与“工作区”对象连接起来。以下是my models.py简化版的一部分:

class User(models.Model):
    # some property fields

class Workspace(models.Model):
    # some property fields

class Subscription(models.Model):
    # some property fields
    user = models.ForeignKey(
        User,
        on_delete=models.CASCADE,
        related_name='subscriptions')
    workspace = models.ForeignKey(
        Workspace,
        on_delete=models.CASCADE,
        related_name='subscriptions')
我已经为对象构建了基于类的视图,这样我就可以从iOS前端通过http get获取工作区对象的列表。出于方便的原因,我希望不仅仅包括模型字段,例如在工作区列表中,我希望包括每个工作区对象的订阅用户列表。有人建议我使用SerializerMethodField()和QuerySet序列化字段,但我不知道如何构造查询。我已经做到了这一点:

class WorkspaceSerializer(serializers.ModelSerializer):
    subscribed_users = serializers.SerializerMethodField()

    class Meta:
        model = Workspace
        fields = ('id', 'subscribed_users')

    def get_users(self, workspace):
        users = User.objects.filter(???)
        serializer = UserSerializer(instance=users, many=True)
        return serializer.data

获取与工作区相关的订阅很容易,因为它们是直接相关的,但是如何获取订阅了相关工作区的用户呢

我想要的语法是双下划线,在DRF中调用。例如:

def get_users(self, workspace):
    users = User.objects.filter(subscription_set__workspace=workspace)
    serializer = UserSerializer(instance=users, many=True)
    return serializer.data

我正在寻找的语法是双下划线,称为DRF。例如:

def get_users(self, workspace):
    users = User.objects.filter(subscription_set__workspace=workspace)
    serializer = UserSerializer(instance=users, many=True)
    return serializer.data