获取有多少个模型包含整数大于 1 的子模型

Get the count of how many models contain a child model with an integer greater than 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 具有 UserAssessment 风险,即 greater than or equal to 1

您可以通过 user_assessments 和 id 分组实现此过滤:

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