【问题标题】:Usage of .to_representation() and .to_internal_value in django-rest-framework?在 django-rest-framework 中使用 .to_representation() 和 .to_internal_value?
【发布时间】:2016-03-15 18:14:56
【问题描述】:

.to_representation().to_internal_valueserializers 中做了什么?
如果我将数据传递给序列化程序,是否首先抛出数据to_representation()
这两个有什么用?

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    如果你想创建一个自定义字段,你需要将 Field 子类化 然后覆盖.to_representation().to_internal_value() 方法。这两种方法用于转换 在初始数据类型和原始的、可序列化的数据类型之间。 原始数据类型通常是数字、字符串、 布尔值、日期/时间/日期时间或无。它们也可以是任何列表或 只包含其他原始对象的字典类对象。 可能支持其他类型,具体取决于您使用的渲染器 使用。

    调用.to_representation()方法转换初始 数据类型转换为原始的、可序列化的数据类型。

    调用to_internal_value() 方法来恢复原语 数据类型转换为其内部 python 表示。这种方法应该 如果数据无效,则引发 serializers.ValidationError。

    请注意,版本 2.x 中存在的 WritableField 类没有 不再存在。您应该继承 Field 并覆盖 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-29
      • 1970-01-01
      • 2021-12-24
      • 2021-10-03
      • 1970-01-01
      • 2015-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多