如何使用不同的字段名称序列化模型?

时间:2015-08-27 23:23:39

标签: serialization django-rest-framework

我有一个带有id和标签的模型:

class Widget(models.Model):
    label = models.TextField()

我想序列化标签和id,所以我有一个像这样的序列化器:

class WidgetSerializer(serializers.ModelSerializer):

    class Meta:
        model = Widget
        fields = ('id', 'label')

这给了我一个像{"id": 61, "label": "Super Widget"}这样的序列化。但是,我需要在不更改模型的情况下为序列化提供不同的标签(例如{"widget_id": 61, "widget_name": "Super Widget"}),因为它在不同的地方使用。有没有办法告诉序列化程序使用不同的标签序列化字段?

1 个答案:

答案 0 :(得分:1)

我认为使用“serializers.ModelSerializer”无法实现这一点,但您可以使用“serializers.Serializer”来实现它。

尝试这样的事情:

class CommentSerializer(serializers.Serializer):
    id = serializers.IntegerField(label="widget_id")
    label = serializers.CharField(label="widget_name")

有关详细信息:http://www.django-rest-framework.org/api-guide/fields/#serializer-fields 例如:http://hackersome.com/p/jezdez/django-serializers