.to_representation()
和.to_internal_value
在serializers
中做什么
如果我将数据传递给序列化程序,数据是否首先抛出to_representation()
这两个有什么用?
如果你想创建一个自定义字段,你需要子类字段然后覆盖CCD_ 5和CCD_ 6方法。这两种方法用于转换在初始数据类型和可序列化的基元数据类型之间。基元数据类型通常将是数字、字符串、或其组合中的任何一种,布尔值、日期/时间/日期时间或无。它们也可以是任何列表或只包含其他基元对象的类似字典的对象。可能支持其他类型,具体取决于所使用的渲染器使用。
调用
.to_representation()
方法来转换初始数据类型转换为基元、可序列化的数据类型。调用
to_internal_value()
方法来恢复基元数据类型转换为其内部python表示。此方法应引发序列化程序。ValidationError,如果数据无效。请注意,2.x版本中存在的
WritableField
类没有存在时间更长。您应该将Field子类化并重写如果字段支持数据输入,则为to_internal_value()
。
参考:
- http://www.django-rest-framework.org/api-guide/fields/#custom-字段
- https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/serializers.py#L417