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

浙公网安备 33010602011771号