2016-10-21 19 views
2

私はリクエストの説明として機能するDjangoモデルを持っています。これは、RESTクライアントから要求を発行するために作成され、タスクの現在の状態を記録し、クライアントが受信した履歴要求を記録する役割を果たします。Django rest framework作成専用シリアライザフィールド

このモデルには、要求されたタスク(たとえば、ターゲットオブジェクトとアクションのタイプ)を微調整したり制御したりするためのフィールドがいくつかあります。明らかに、私は、オブジェクトの作成時にこれらのフィールドを制御することをクライアントに願っていますが、このタスクが実行を開始したオブジェクトは変更できません。

私はserializers.ReadOnlyFieldに似た何かを期待していたので、私はのようなものかもしれない:

をしかし、ドキュメントやGoogleでそれを見つけることができませんでした。

答えて

8

ただ、ヴィムの答えに展開する、これは着信要求メソッドに基づいて異なるシリアライザを選択する方法である:

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 
関連する問題