如何在序列化程序中添加字段? [英] how can I add field in serializer?
问题描述
以下是我的 serializer.py
文件:
from rest_framework import serializers
class TaskListSerializer(serializers.Serializer):
id = serializers.CharField()
user_id = serializers.CharField()
status = serializers.CharField )
name = serializers.CharField()
在Python shell中,我输入: / p>
>>>从串行器导入TaskListSerializer作为ts
>>> result = ts({'id':1,'user_id':1,'status':2,'name':'bob'})
>>> result.data
{'status':u'2','user_id':u'1','id':u'1','name':u'bob'}
现在我要这样做:
输入不变,也是 {'id':1,'user_id':1,'status':2,'name':'bob'}
p>
但是我想添加一个字段
并更改名称:bob
到 jim
在 serializer.py
中,输出如下:
{'status':u'2','user_id':u'1','id':u'1','name':u'jim',u'age ':'15'}
我如何在 serializer.py
?
使用serializers.SerializerMethodField()
class TaskListSerializer(serializers.ModelSerializer):
complex_things = serializers.SerializerMethodField()
def get_complex_things(self,obj):
resu lt_of_complex_things = 2 + 2
return result_of_complex_things
Below is my serializer.py
file:
from rest_framework import serializers
class TaskListSerializer(serializers.Serializer):
id = serializers.CharField()
user_id = serializers.CharField()
status = serializers.CharField()
name = serializers.CharField()
In Python shell, I input this:
>>> from serializer import TaskListSerializer as ts
>>> result = ts({'id':1, 'user_id': 1, 'status':2, 'name': 'bob'})
>>> result.data
{'status': u'2', 'user_id': u'1', 'id': u'1', 'name': u'bob'}
Now I want do this:
First, the input is not change, is also {'id':1, 'user_id': 1, 'status':2, 'name': 'bob'}
But I want to add a field
and change name: bob
to jim
in serializer.py
and make output like this:
{'status': u'2', 'user_id': u'1', 'id': u'1', 'name': u'jim', u'age': '15'}
How can I do it in serializer.py
?
Use serializers.SerializerMethodField()
class TaskListSerializer(serializers.ModelSerializer):
complex_things = serializers.SerializerMethodField()
def get_complex_things(self, obj):
result_of_complex_things = 2 + 2
return result_of_complex_things
这篇关于如何在序列化程序中添加字段?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!