获得多少个模型包含一个整数大于1的子模型的计数

问题描述 投票:0回答:1
class Company(models.Model):
    company = models.CharField(max_length=30, unique=True)
    create_date = models.DateTimeField(default=now, editable=False)

    def __str__(self):
        return self.company


class GroupAssessment(models.Model):
    company = models.ForeignKey(Company, on_delete=models.CASCADE, related_name='group_assessments')
    placibo_drug = models.CharField(max_length=10, blank=True)

    def __str__(self):
        return self.company.company


class UserAssessment(models.Model):
    group_assessment = models.ForeignKey(GroupAssessment, on_delete=models.CASCADE, related_name='user_assessments')
    risk = models.IntegerField()

让我们说有2个GroupAssessment,一个叫Apple,另一个叫Microsoft

>>> GroupAssessment.objects.all()
<QuerySet [<GroupAssessment: Apple>, <GroupAssessment: Microsoft>]>
# 2 groups

10 UserAssessment属于GroupAssessment Microsoft。 3个风险大于或等于1。12个属于Apple,没有风险。

我将如何计算有多少[[GroupAssessment有UserAssesssment风险为greater than or equal to 1的计数。

django python-3.x django-models django-orm django-3.0
1个回答
1
投票
您可以通过user_assessments实现此过滤并按ID分组:

query = GroupAssessment.objects.filter(user_assessments__risk__gte=1).annotate(num_groups=Count('id')) print(query.num_groups)

© www.soinside.com 2019 - 2024. All rights reserved.