如何在序列化程序中添加字段? [英] how can I add field in serializer?

查看:263
本文介绍了如何在序列化程序中添加字段?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下是我的 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆