获取有多少个模型包含整数大于 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)
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)