Django休息框架只创建序列化器字段

Nir*_*Izr 6 python django django-rest-framework

我有一个Django模型作为请求描述.创建它是为了由REST客户端发出请求,用于记录任务的当前状态,并记录客户端收到的历史请求.

此模型有一些字段用于微调和控制请求的任务(例如,目标对象和操作类型).显然,我希望客户端在对象创建时控制这些字段,但之后不能控制(一旦任务开始运行,就无法更改对象).

我希望有类似的东西serializers.ReadOnlyField,所以我可以有类似的东西:

class TaskSerializer(serializers.ModelSerializer):
    owner = serializers.ReadOnlyField(source='owner.username')
    task_id = serializers.ReadOnlyField()
    target_object = serializers.CreateOnlyField()
Run Code Online (Sandbox Code Playgroud)

但无法在文档或谷歌中找到它.

fab*_*tto 14

为了扩展Wim的答案,这是一种基于传入请求方法选择不同序列化器的方法:

class RequestViewSet(viewsets.ModelViewSet): 
    serializer_class = RequestModelSerializer 
    model = Request 

    def get_serializer_class(self): 
        serializer_class = self.serializer_class 
        if self.request.method == 'POST': 
            serializer_class = SerializerWithoutCertainFields 
        return serializer_class
Run Code Online (Sandbox Code Playgroud)