【问题标题】:Filter nested queryset in serializer在序列化程序中过滤嵌套查询集
【发布时间】:2020-12-12 00:23:34
【问题描述】:

我有这些模型:

    class Item(..):
        ....

    class Folder(..):
        ...

    class File(..):
        item = ...
        folder = ...

class FileSerializer(...):
    class Meta:
        model = File

class FolderSerializer(...):
    files = FileSerializer(many=True,readonly=True)
    class Meta:
        model = Folder

当我调用FolderViewSet LIST 请求时,它为每个Folder 序列化了所有Files。我需要让它只序列化成为特定 Item 的文件。

现在,我正在前端过滤Files,但将来它会变得非常重要。

你知道如何让它工作吗?有内置方式吗?

【问题讨论】:

    标签: python django django-rest-framework django-queryset django-related-manager


    【解决方案1】:

    SerializerMethodField 允许添加自定义查询来限制外键模型。

    class FolderSerializer(...):
        files = serializers.SerializerMethodField()
    
        class Meta:
            model = Folder
    
        def get_files(self, instance):
            files = File.objects.filter(folder=instance)
            serializer = FileSerializer(instance=files, request=request, many=True, readonly=True)
            return serializer.data
    

    【讨论】:

      猜你喜欢
      • 2020-03-21
      • 2016-05-14
      • 2015-05-11
      • 2015-03-25
      • 2017-08-04
      • 1970-01-01
      • 1970-01-01
      • 2017-06-23
      • 1970-01-01
      相关资源
      最近更新 更多