Django Rest Framework将参数传递给ModelSerializer的含义是什么?

时间:2018-08-18 07:45:06

标签: django python-3.x django-rest-framework

我试图理解传递给serializers.ListUserSerializer()的参数。我知道last_five是要通过串行器返回的数据。

我无法理解的是该模型在多对多关系中的位置。通过阅读DRF文档,当模型具有多对多关系时,将传递many=True。但是,我不明白这是如何指定一对多关系的。我看到了两种可能性。 。 。

  • 当前用户与所有其他用户一对多
  • 当前用户与last_five用户查询之间一对多

我也不太了解context的论点。我认为这仅仅是对客户端的有效负载中包含的api的请求调用。

此代码的基础是here

    class ExploreUsers(APIView):

        def get(self, request, format=None):

            # the "-date_joined" specifies descending order vs "date_joined"
            last_five = models.User.objects.all().order_by('-date_joined')[:5]

            # many=True provides to-many relationship from one user to many users
            serializer = serializers.ListUserSerializer(
                last_five, many=True, context={"request": request})

            return Response(data=serializer.data, status=status.HTTP_200_OK)

1 个答案:

答案 0 :(得分:1)

many = True
通过设置many=True,您可以告诉DRF 您要传递的对象包含多个项目(项目列表) ,因此DRF需要使用序列化程序类对每个项目进行序列化(并且serializer.data将是一个列表)

在这里,您正在传递queryset,它是一个类似于list的对象(模型类的对象列表)

context
context是一个{(或应该是)dict,它已传递到您的serializer,并且您可以通过 {{1} }

示例

context data