用石墨烯 django 数点赞

Posted

技术标签:

【中文标题】用石墨烯 django 数点赞【英文标题】:Count likes with graphene django 【发布时间】:2021-09-25 13:16:33 【问题描述】:

我正在尝试用石墨烯 django 制作一个字段,以便能够计算每个帖子的点赞总数,我该怎么做,我尝试做的是以下

class PostType(DjangoObjectType):
    class Meta:
        model = Post

    likes = graphene.List()

    def resolve_count_like(self, info, id):
        post_id = Post.objects.filter(id=id)
        n = Likes.objects.filter(post_id=post_id)
        return len(n)

【问题讨论】:

【参考方案1】:

可以使用 root 访问当前对象的属性,因此您无需手动传递您的帖子 ID。试试这样的:

class PostType(DjangoObjectType):
    class Meta:
        model = Post

    likes = graphene.List()
    count_like = graphene.Int()

    def resolve_count_like(self, root, info, **kwargs):
        return Likes.objects.filter(post_id=root.id).count()

您可以通过在查询集上链接 count() 来跳过通过 len 检查长度。这会更快,因为查询执行SELECT COUNT(*)

【讨论】:

以上是关于用石墨烯 django 数点赞的主要内容,如果未能解决你的问题,请参考以下文章

聚合石墨烯/django 查询中的字段

石墨烯 Django 获取物品

石墨烯代码在 Django 数据迁移之前运行

Django 会话不是使用 JWT 和石墨烯生成的

石墨烯和 Django 关于关系

Django 石墨烯,按对象过滤