首页 > 解决方案 > DRF:如何创建一个模型属性来统计喜欢和不喜欢的数量?

问题描述

我有一个看起来像这样的模型:

class Posts(models.Model):
    title = models.CharField(max_length=100)
    creation_timestamp = models.DateTimeField(auto_now_add=True)
    body = models.CharField(max_length=255)
    user_id = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) 
    likes = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name="likes",blank=True)
    dislikes = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name="dislikes",blank=True)

我想在这个模型中创建一个可以计算喜欢和不喜欢的数量的属性。我想它看起来像这样:

@property
def interaction_count(self):
    return len(self.likes) + len(self.dislikes)

可悲的是,打电话self.likes并没有像我想要的那样给我一份清单。

这是我尝试访问的列表的示例:

喜欢和不喜欢的例子(我没有足够的声誉来嵌入图像)(为了澄清,这个喜欢和不喜欢列表中的数字是 user_ids.

是否有另一种方法可以访问与特定帖子实例关联的所有喜欢的列表?或者也许有更好的方法来完全创建interaction_count

标签: djangodjango-modelsdjango-rest-framework

解决方案


我认为这应该有效:

@property
def interaction_count(self):
    return self.likes.count() + self.dislikes.count()

推荐阅读