0
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

10UserAssessment属于GroupAssessment 微软。3个风险大于等于1。12个属于苹果,没有风险。

我如何计算有多少GroupAssessment具有UserAssessment风险greater than or equal to 1

4

1 回答 1

2

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

    query = GroupAssessment.objects.filter(user_assessments__risk__gte=1).annotate(num_groups=Count('id'))
    print(query.num_groups)
于 2020-01-20T20:24:44.887 回答