django rest_framework serializer的ManyRelatedField 和 SlugRelatedField使用

class BlogListSerializer(serializers.Serializer):
    id = serializers.IntegerField()
    user = BlogUserInfoSerializer()
    title = serializers.CharField()
    like_user = serializers.ManyRelatedField(serializers.SlugRelatedField(slug_field="username", source="user_id"), 
                                             queryset=User.objects.all(), source="follow")
    topic_name = serializers.SlugRelatedField(slug_field="name", source="topic", queryset=Topic.objects.all())
    create_at = serializers.DateTimeField()



class Blog(models.Model):
    follow = models.ManyToManyField(User, verbose_name="关注", related_name="follow_blog")
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="blog")
    title = models.CharField(max_length=100)
    content = models.TextField(max_length=200000)
    topic = models.ForeignKey(Topic, null=True, verbose_name="话题", on_delete=models.CASCADE)
    create_at = models.DateTimeField(verbose_name="创建时间", auto_now_add=True)


class Topic(models.Model):
name = models.CharField(verbose_name="名称", max_length=100)
create_at = models.DateTimeField(verbose_name="创建时间", auto_now_add=True)


  

返回结果如下

{
            "id": 158,
            "user": {
                "id": 50,
                "avatar": "https://xxx.xxx.cn/media/191b6193972a439e9886187f249bd2d9.jpg",
                "username": "语家",
                "sex": 2
            },
            "title": "想开个童装店?",
            "like_user": [
                "13800138000"
            ],
            "topic_name": "#你们攒钱为了什么#",
            "create_at": "2018-10-15 16:21:36"
}

  

原文地址:https://www.cnblogs.com/shenwenlong/p/10837613.html