オブジェクトが正常に保存された後にserializer.data
を返す共通のパターンがあります。これ応答(serializer.data)のモデルオブジェクトを返すDRF
raise TypeError(repr(o) + " is not JSON serializable")
いくつかの解決策:データを他の
実行
to_internal_value
は(例えばPrimeryKeyRelatedField
のように)Djangoのオブジェクトを返す場合は、次にResponse
このエラーを生成します道、すなわちFooSerializer(data=serializer.data)
手動でそれを置き換える、すなわち
serializer.data['field'] = serializer.data['field'].pk
どこかで継承何かに(それが
models.Model
のサブクラスだかどうかを知ることがisinstance
ための方法がありますしない限り、おそらく不可能)応答が__str__
表現にDjangoのオブジェクトと、デフォルトを受け入れることができるようには、[全体]を返しません。オブジェクト。もう一方の側には、送信したデータのコピーが含まれているので、サーバーによって変更されていないフィールドを返す必要はありません。
これらのソリューションの中で最もPythonのものがありますか、ここに記載されていないものがありますか?
申し訳ありませんが、私は 'serializer.data'の代わりに' serializer.validated_data'を使用するべきですか? – dtgq
Djangoオブジェクトを保存している場合は、逆シリアル化しています。 http://www.django-rest-framework.org/api-guide/serializers/#deserializing-objectsを参照してください。 – Linovia