在django rest框架中修改many = True的序列化程序表示

时间:2015-12-24 09:41:07

标签: django-rest-framework

我有一个模型序列化器TestSerializer。

class Test(models.Model):
    name = models.CharField(max_length=255)
    email = models.EmailField(max_length=255)

class TestSerializer(serializers.ModelSerializer):
    class Meta:
        model = Test
        fields = ('name', 'email')

我的问题是我想在序列化的输出数据中添加一个名为'profile_url'的字段。此profile_url字段是通过调用另一个基于user_id返回profile_url的API来计算的。现在,我能想到的最简单的方法是通过重写to_representation方法并在该方法中调用API并返回它来实现这一点,但这意味着将对每个被序列化的记录进行API调用。在django-rest-framework中有没有办法,我会得到序列化对象的列表,我可以在输出它之前修改它们?

1 个答案:

答案 0 :(得分:1)

您应该覆盖视图,以便收集所需的所有数据,将它们注入测试实例,然后序列化整个数据。 确保使用source参数在TestSerializer中显式声明该字段,以匹配您在前面步骤中添加的属性。