有没有办法在 Django Rest Framework 中添加自定义字段

Is there a way to add custom fields in Django Rest Framework

我正在为我的 Django 博客项目创建一个 rest API,我有如下模型 PostPostLike 模型:

class Post(models.Model):
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    text = models.TextField()
    approved = models.BooleanField(default=False)
    created_date = models.DateTimeField(default=timezone.now)
    published_date = models.DateTimeField( default=timezone.now, blank=True, null=True)
    def publish(self):
        self.published_date = timezone.now()
        self.save()
    def __str__(self):
        return self.text[0:100]

class PostLike(models.Model):
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    post = models.ForeignKey(Post, default=None, on_delete=models.CASCADE)
    created_date = models.DateTimeField(default=timezone.now)

我有一个 Post 序列化器,比如

class PostSerializers(ModelSerializer):
    likes_count = serializers.IntegerField(read_only=True)
    class Meta:
        model= Post
        fields = ['id','text','author', 'approved','created_date', 'likes_count' ]

我希望 likes_count 与查询 post 的 post 个对象一起计数 PostLike 个对象。正确的实施方式是什么?

SerializerMethodField 允许您 return 一个基于 class 方法的 return 值的值。

编辑: 请注意,该方法接受对象作为参数。因此要实现你想要的,你可以 return:

def like_count(self, obj):
    return obj.postlike_set.count()