Django Rest Framework 从模型中输出数据,如果在输出之前要针对某一个字段进行修改,可以用 serializers.SerializerMethodField() 方法指定一个新的字段,然后在 get_新字段 方法中对指定字段进行处理。

具体用法如下:

# models.py
class Article(models.Model):
    title = models.CharField(max_length=250)
    pub_date = models.DateField()
    content = models.TextField()

要输出一个 titlepub_dateabout 序列化数据。其中 titlepub_date 为 models.py 中对应的字段, aboutcontent 字段的二次处理后数据,其实也就截取部分数据而已。

# serializers.py
class ArticleSerializer(serializers.HyperlinkedModelSerializer):
    about = serializers.SerializerMethodField()

    class Meta:
        model = Article
        fields = ('title', 'pub_date', 'about')
    
    def get_about(self, obj):
        return obj.content[:100]

这样得到序列化的数据就是针对指定字段二次处理后的。