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
的计数。
user_assessments
实现此过滤并按ID分组: query = GroupAssessment.objects.filter(user_assessments__risk__gte=1).annotate(num_groups=Count('id'))
print(query.num_groups)