如何在Django Rest Framework中隐藏一些响应字段

时间:2018-04-04 18:40:50

标签: django django-rest-framework

另一位DRF新手在这里。

我想隐藏一些字段以响应我的REST API。

假设我有一些基本的 Exchange服务

serializers.py

if FP.objects.filter(FP_Item__contains=row[0]):
    continue

views.py

class ConversionSerializer(serializers.Serializer):
    value = serializers.FloatField()
    from_ = serializers.ChoiceField(choices=SOME_CHOICES)
    to_ = serializers.ChoiceField(choices=SOME_CHOICES)
    converted_value = serializers.SerializerMethodField(read_only=True)
    ....

对于我的 POST 请求,我传递了3个值:value,from,to。作为回应,我得到4个值:value,from,to,converted_value。

class ConversionAPIView(APIView):
    serializer_class = ConversionSerializer
    permission_classes = []

    def post(self, request, *args, **kwargs):
        serializer = self.serializer_class(data=request.data)
        serializer.is_valid(raise_exception=True)
        return Response(serializer.data)
        ....

现在,我希望只响应 converted_value 而不是所有字段。怎么实现呢?感谢

1 个答案:

答案 0 :(得分:4)

您应该使用write_only参数:

class ConversionSerializer(serializers.Serializer):
    value = serializers.FloatField(write_only=True)
    from_ = serializers.ChoiceField(write_only=True, choices=SOME_CHOICES)
    to_ = serializers.ChoiceField(write_only=True, choices=SOME_CHOICES)
    converted_value = serializers.SerializerMethodField(read_only=True)
    ....