另一位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 而不是所有字段。怎么实现呢?感谢
答案 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)
....