将附加数据添加到Django序列化程序返回的模型数据中

时间:2016-03-28 11:03:58

标签: django serialization

我正在使用Django REST框架来创建API。我想将来自多个模型的数据添加到序列化输出中。

目前我的序列化器看起来像这样:

class ItemSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Item
        fields = ('url', 'owner', 'item_type')

我想添加一个

item_cost

从我的Costs模型到序列化输出的值(Item模型中每个项目的不同成本)。我还想在序列化输出中添加一个unix时间戳值(一个值放在所有其他序列化输出的末尾)。

我的序列化程序在视图中使用如下:

class ItemViewSet(viewsets.ModelViewSet):
    queryset = Item.objects.all().order_by('-date_added')
    serializer_class = ItemSerializer

我无法弄清楚如何将其他数据项添加到序列化输出中。

1 个答案:

答案 0 :(得分:2)

您可以使用SerializerMethodField中的rest_framework.serializers并创建一个返回您要查找的值的方法,例如:

class ItemSerializer(serializers.HyperlinkedModelSerializer):
    cost = serializers.SerializerMethodField()

    def get_cost(self, obj):
        value = ... # calculate your value
        return value

    class Meta:
        model = Item
        fields = ('url', 'owner', 'item_type', 'cost')

文档中的参考:http://www.django-rest-framework.org/api-guide/fields/#serializermethodfield