django restframework 使用 SerializerMethodField 获取关联的model的字段

首先,SerializerMethodField的使用非常简单

class CommentSerializer(serializers.ModelSerializer):
    name = serializers.SerializerMethodField('get_user_name')

    class Meta:
        model = Comment
        fields = ('name', 'create_time', 'text')

    def get_user_name(self, obj):
        return obj.author.nickname

如上图,obj是对应的模型,此处是Comment。author是Comment的ForeignKeyField,nickName是Author的一个字段。

 

到此为止非常简单,但如果我有一个manytomany的字段该怎么办?譬如:

class Post(models.Model):
    like = models.ManyToManyField(User, related_name='likes', blank=True)

一个博客可能被多个用户点赞,而一个用户也可以点赞多个博客。此时,如果还是照搬前面的代码,在PostSerializer中写成

def get_who_like_it(self, obj):
    return obj.like.nickname
posted @ 2019-01-14 13:10  e-yi  阅读(7)  评论(0)    收藏  举报  来源