如何创建自定义序列化程序字段,该字段返回的值与保存到数据库的值不同?
例如:
['alpha', 'bravo', 'delta']
['alpha', 'delta', 'E']
['alpha', 'delta', 'echo']
保存到数据库并在'bravo'
['alpha', 'delta', {'foo': 'E', 'bar': 'echo'}]
(但不在200响应中)基本上,我正在寻找自定义字段中的方法我可以用两个输入(来自请求和来自数据库)和两个输出(到数据库和响应)来编写我的逻辑
答案 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__