2016-11-29 61 views
5

我需要向我的序列化程序添加一个静态字段。无论传入的对象如何,它总是应该返回相同的值。目前,我实现了它,像这样:django rest框架 - 如何为串行器添加一个静态字段值

class QuestionSerializer(serializers.ModelSerializer): 
    type = serializers.SerializerMethodField() 

    @staticmethod 
    def get_type(obj): 
     return 'question' 

    class Meta: 
     model = Question 
     fields = ('type',) 

但有一个简单的方法来做到这一点,没有SerializerMethodField

+0

我认为这是做到这一点的正确方法。我不知道有什么更好的办法。 – davyria

回答

2

,唯一的选择是覆盖to_representation并添加值有:虽然

def to_representation(self, obj): 
    data = super().to_representation(obj) 
    data['type'] = 'question' 
    return data 

不是一个更好的选择。

0

如果您不关心在模型中添加线条,向模型添加静态字段会更容易。

class Question(models.Model): 
    type = 'question' 

class QuestionSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Question 
     fields = ('type',)