DRF Serializer字段返回值与保存到数据库的值不同

时间:2017-03-15 02:24:33

标签: django django-rest-framework

如何创建自定义序列化程序字段,该字段返回的值与保存到数据库的值不同?

例如:

  • 数据库目前的值为['alpha', 'bravo', 'delta']
  • 使用值['alpha', 'delta', 'E']
  • 进行更新
  • 字段应将['alpha', 'delta', 'echo']保存到数据库并在'bravo'
  • 上运行删除功能
  • 字段应在201响应中返回['alpha', 'delta', {'foo': 'E', 'bar': 'echo'}](但不在200响应中)

基本上,我正在寻找自定义字段中的方法我可以用两个输入(来自请求和来自数据库)和两个输出(到数据库和响应)来编写我的逻辑

1 个答案:

答案 0 :(得分:0)

您应该检查DRF documentation on custom fields

如上所述,要返回自定义对象,您必须定义.to_representation()方法。

文档中的示例:

class ClassNameField(serializers.Field):
    def get_attribute(self, obj):
        # We pass the object instance onto `to_representation`,
        # not just the field attribute.
        return obj

    def to_representation(self, obj):
        """
        Serialize the object's class name.
        """
        return obj.__class__.__name__