2

次のユースケースに対処しようとすると、不可解な結果でいっぱいの壁にぶつかったようです。

URL: '^api/event/(?P<pk>[0-9]+)/registration$'
payload: {"registered": "true"} or {"registered": "false"}

指定された pk に対応するイベント オブジェクトを取得し、それに基づいて次のようにします。

  • 認証されたユーザーが登録されているかどうかを取得するGETリクエストで
  • PUT で登録状態を変更します。

PUT リクエストで着信ペイロードを処理するポイントまで、すべてが正常に機能します。私はこのようなシリアライザーを作成しようとしました:

class RegistrationSerializer(serializers.Serializer):
    registered = fields.BooleanField()

APIView の put メソッドから次のように呼び出します。

serializer = RegistrationSerializer(data=request.DATA)

しかし、それは機能せず、serializer.data常に `{"registered": False} が含まれています

シェルから、別の分離テストを試しました。

>>> rs = RegistrationSerializer(data={'registered':True})
>>> rs
<app.serializers.RegistrationSerializer object at 0x10a08cc10>
>>> rs.data
{'registered': False}

私は何を間違っていますか?このユースケースを処理する最良の方法は何ですか?

4

1 に答える 1