gpt4 book ai didi

django - 如何使用 annotate() 计算 Django 中相关模型的子集?

转载 作者:行者123 更新时间:2023-12-04 22:37:20 26 4
gpt4 key购买 nike

我正在尝试使用 Django 的注释功能将相关模型的计数添加到查询集。但是,我不想完整计数相关对象,我只想计算事件对象(即“is_active=True”)。我不知道如何过滤计数。

(简化的)相关模型:

class Post(models.Model):
user = models.ForeignKey(User)
title = models.CharField(max_length=80)
body = models.TextField()

class Comment(models.Model):
user = models.ForeignKey(User)
post = models.ForeignKey(Post)
comment_body = models.CharField(max_length=80)
is_active = models.BooleanField(default=True)

在一个 View 中,我正在尝试注释一个查询集:
queryset=Post.objects.all().annotate(num_comments=Count('comment', distinct=True))

以上计算了与帖子相关的所有评论,而我只想计算“is_active”的评论。谷歌和 Django 文档在这里没有帮助我。有没有人遇到并解决过这个问题?

最佳答案

您只需要过滤 is_active在做注释之前:

Post.objects.filter(comment__is_active=True).annotate(num_comments=Count('comment'))

the explanation here .

关于django - 如何使用 annotate() 计算 Django 中相关模型的子集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3824494/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com