我正在使用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
我无法弄清楚如何将其他数据项添加到序列化输出中。
答案 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