在Django REST Framework上只在GET请求上进行序列化

2024-10-04 07:38:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我只希望AnchorSerializer()在GET请求上序列化,以便它将序列化对象作为响应返回。在创建AnchorToUser对象时,POST请求应为整数。在

class AnchorToUserSerializer(serializers.ModelSerializer):
    # Add the username from the user object relation.
    user = serializers.ReadOnlyField(source='user.username')
    # Serialize the nested anchor.
    anchor = AnchorSerializer() # Should only be used with GET.
    class Meta:
        model = AnchorToUser
        fields = (
            'anchor',
            'user',
            'created_at'
        )

Tags: the对象get序列化username整数postclass
1条回答
网友
1楼 · 发布于 2024-10-04 07:38:35

也许您可以为GETPOST使用不同的序列化程序。在

class AnchorToUserGetSerializer(serializers.ModelSerializer):
    user = serializers.ReadOnlyField(source='user.username')
    anchor = AnchorSerializer(read_only=True) # only used for serialization

    class Meta:
        model = AnchorToUser
        fields = ('anchor', 'user', 'created_at')


class AnchorToUserPostSerializer(serializers.ModelSerializer):
    user = serializers.ReadOnlyField(source='user.username')
    anchor = serializers.IntegerField(write_only=True) # accept integer values

    class Meta:
        model = AnchorToUser
        fields = ('anchor', 'user', 'created_at')

要决定使用哪个序列化程序,可以重写get_serializer_class()方法。在

在视图或视图集中,可以执行以下操作:

^{pr2}$

相关问题 更多 >