gpt4 book ai didi

python - 获取跨越关系的对象的计数

转载 作者:行者123 更新时间:2023-12-01 08:25:59 25 4
gpt4 key购买 nike

我正在尝试获取跨越关系的对象的计数。每个测试计划包含 n 个案例。 plan_case_count() 方法给出了计数。每个 TestPlanCase 包含 n 个步骤。我想获得与该计划相关的所有案例的所有步骤的总和。 plan_case_step_count() 方法应该通过迭代查询集并累加计数来完成此操作。但这不起作用。我收到的错误消息是:

“RelatedManager”对象没有属性“testplanstep_set”

class TestPlan(models.Model):
tp_title = models.CharField(max_length=200)
tp_version = models.IntegerField()
tp_date = models.DateField(default=timezone.now)

def plan_case_count(self):
"""This one works"""
return self.testplancase_set.count()

def plan_case_step_count(self):
"""This one doesn't"""
pcs_count = 0
for case in self.testplancase_set:
pcs_count += case.testplanstep_set.count()
return pcs_count


class TestPlanCase(models.Model):
tpc_plan = models.ForeignKey(TestPlan, on_delete=models.CASCADE)
tpc_case = models.ForeignKey(TestCase, on_delete=models.CASCADE)
tpc_seq_no = models.IntegerField(default=1)


class TestPlanStep(models.Model):
tps_case = models.ForeignKey(TestPlanCase, on_delete=models.CASCADE)
tps_step = models.ForeignKey(TestSteps, on_delete=models.CASCADE)
tps_ok = models.CharField(max_length=4, choices=Choices.yes_no)
tps_issue = models.CharField(max_length=200, blank=True)

我做错了什么?

最佳答案

请直接编写计数查询:

def plan_case_step_count(self):
return TestPlanStep.objects.filter(<b>tps_case__tpc_plan=self</b>).count()

这将直接使用 JOIN 在 SQL 中编写 COUNT(*) 查询。

关于python - 获取跨越关系的对象的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54252287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com