序列化程序设置自定义值

时间:2014-09-09 02:12:23

标签: django django-rest-framework

我有一个类似的模型序列化器 -

class VariableSerializer(serializers.ModelSerializer):
    owner_name = serializers.Field(source='owner_id.owner_name')

    class Meta:
        model = Varmst
        resource_name = 'varmst'
        fields = ('varmst_id', 'varmst_type', 'varmst_name', 'varmst_value',
            'varmst_desc')

'varmst_value'对应于一个整数,取决于该整数可能意味着不同的东西。如何将归一化值返回整数?

即。 如果'varmst_value'= 2,那么我希望序列化程序返回'varmst_type':'email' 如果'varmst_value'= 3,那么我希望序列化程序返回'varmst_type':'website'

1 个答案:

答案 0 :(得分:1)

我认为以下解决方案可以帮助您

class VariableSerializer(serializers.ModelSerializer):
    owner_name = serializers.Field(source='owner_id.owner_name')

    class Meta:
        model = Varmst
        resource_name = 'varmst'
        fields = ('varmst_id', 'varmst_type', 'varmst_name', 'varmst_value',
                  'varmst_desc')

    def transform_varmst_type(self, obj, value):
        if obj.varmst_value == 2:
            return "email"
        if obj.varmst_value == 3:
            return "Website"