2015-12-10 9 views

答えて

9

カスタムフィールドを作成する場合は、フィールドをサブクラス化して、.to_representation().to_internal_value()メソッドのいずれかまたは両方をオーバーライドする必要があります。これらの2つのメソッドは、初期データ型とプリミティブなシリアライザブルデータ型の間の変換に使用されます。基本データ型は、通常、数値、文字列、ブール値、日付/時刻/日時、またはNoneのいずれかになります。それらはまた、他のプリミティブオブジェクトのみを含む任意のリストまたは辞書のようなオブジェクトであってもよい。使用しているレンダラーに応じて、他のタイプがサポートされている可能性があります。

.to_representation()メソッドは、初期データ型をプリミティブのシリアライズ可能データ型に変換するために呼び出されます。

to_internal_value()メソッドは、プリミティブデータ型を内部のPython表現に復元するために呼び出されます。データが無効な場合、このメソッドはserializers.ValidationErrorを送出する必要があります。

バージョン2.xに存在するWritableFieldクラスが存在しないことに注意してください。フィールドがデータ入力をサポートする場合は、フィールドをサブクラス化してto_internal_value()を上書きする必要があります。

参考:

  1. http://www.django-rest-framework.org/api-guide/fields/#custom-fields
  2. https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/serializers.py#L417
関連する問題