cat*_*hyk 2 django django-rest-framework
另一个DRF新手在这里。
我想隐藏一些字段以响应我的REST API。
假设我有一些基本的Exchange服务:
serializers.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)
....
Run Code Online (Sandbox Code Playgroud)
views.py
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)
....
Run Code Online (Sandbox Code Playgroud)
对于我的POST请求,我传递了3个值:value,from,to。作为响应,我得到4个值:value,from,to,converted_value。
{
"value": 100,
"from_": "foo",
"to_": "bar",
"converted_value": 200
}
Run Code Online (Sandbox Code Playgroud)
现在,我只想获得而不是所有字段作为响应的converted_value。如何执行呢?谢谢
您应该为此使用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)
....
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1614 次 |
| 最近记录: |