【问题标题】:What does 'many = True' do in Django Rest FrameWork?Django Rest FrameWork 中的“many = True”有什么作用?
【发布时间】:2018-12-15 20:00:33
【问题描述】:

我现在正在学习 DRF,我对这个 many = True 代码有点困惑。它有什么作用?或者是什么意思?

示例 1

class AlbumSerializer(serializers.ModelSerializer):
    tracks = serializers.RelatedField(many=True)

    class Meta:
        model = Album
        fields = ('album_name', 'artist', 'tracks')

示例 2

class UserList(generics.ListCreateAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer
    permission_classes = (IsAdminUser,)

    def list(self, request):
        # Note the use of `get_queryset()` instead of `self.queryset`
        queryset = self.get_queryset()
        serializer = UserSerializer(queryset, many=True)
        return Response(serializer.data)

【问题讨论】:

  • @DanielRoseman 是的先生,读过它,这就是为什么我在序列化器关系中感到困惑,它写成many - If applied to a to-many relationship, you should set this argument to True.,然后在序列化器中写成To serialize a queryset or list of objects instead of a single object instance, you should pass the many=True ... 一个代码,但两种不同的解释让我困惑..
  • 这些解释有什么不同?两者都说如果您有多个对象,请将其设置为 true。

标签: django django-rest-framework


【解决方案1】:

我认为您将 many=True 与多对多关系混淆了,但概念并非如此

通过设置 many=True 你告诉 drf 查询集包含多个项目(项目列表),因此 drf 需要使用序列化程序类序列化每个项目(serializer.data 将是一个列表)

如果您不设置此参数,则表示 queryset 是单个实例,serializer.data 将是单个对象)

【讨论】:

    猜你喜欢
    • 2013-07-05
    • 2021-09-20
    • 2015-05-15
    • 1970-01-01
    • 2017-06-11
    • 2021-12-07
    • 2019-01-24
    • 2019-10-04
    • 2017-12-24
    相关资源
    最近更新 更多