如何在序列化器字段的查询集上应用LIMIT?

时间:2019-08-04 09:46:30

标签: django-rest-framework

我有一个关于字段查询集限制的问题。

我有以下序列化器:


class UserProfileSrializer(serializers.Serializer):

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop("user", None)
        serializers.Serializer.__init__(self, *args, **kwargs)


    boats = serializers.SlugRelatedField(many=True, source="boatmodel_set", slug_field="boat_name",
                                         read_only=True)
    articles = serializers.StringRelatedField(many=True, source="article_set", read_only=True)
    comment = serializers.StringRelatedField(many=True, source="get_comments", read_only=True)

每个字段代表不同的模式实例。

父模型-USER 辅助模型1 – BoatModel,针对用户模型遍历为“ boatmodel_set” 次要模型2 –文章,针对USER模型遍历为“ article_set”

观看次数


class UserProfileView(views.APIView):   

    def get(self, request, format=None, **kwargs):
        user = self.request.user
        serializer = serializers.UserProfileSrializer(user)
        data = serializer.data
        #data["boats"] = sorted(data["boats"])[:10]  - need something better as it overloads DB
        #data["articles"] = data["articles"][:10]
        return Response(data)

问题是,我是否不想序列化并呈现与用户有关系的“ boatmodel_set”和“ article_set”中的所有条目(可能是数百个),但是我想将它们限制为“ [:10]个条目”只在“ article_set”条目中包含“ boatmodel_set”和[:10]条目,并且仍将这些字段保持为read_only,并且在没有可调用的source()和methodfield的情况下也是可能的。可以在某处覆盖它吗?

谢谢

P.S。注释字段-请从范围-不同主题中排除。

1 个答案:

答案 0 :(得分:1)

您可以使用序列化器字段的get方法并自行限制它们。这是您的操作方式:

class under test