Python Django:查询父项时在HTML模板中显示子项的计数
我必须将名为Python Django:查询父项时在HTML模板中显示子项的计数,python,django,orm,Python,Django,Orm,我必须将名为服务的对象与子对象要求。 我试图实现的是,首先过滤服务对象并显示它,然后在它下面显示需求计数。如下图所示。它显示服务和与服务关联的需求计数,还显示状态为“已验证”的需求总数 Models.py class Service(models.Model): service = models.CharField(null=False, max_length=254) company = models.ForeignKey(Company_Data, on_delete=mo
服务
的对象与子对象要求
。
我试图实现的是,首先过滤服务
对象并显示它,然后在它下面显示需求计数。如下图所示。它显示服务和与服务关联的需求计数,还显示状态为“已验证”的需求总数
Models.py
class Service(models.Model):
service = models.CharField(null=False, max_length=254)
company = models.ForeignKey(Company_Data, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Requirements(models.Model):
Requirements= models.CharField(null=False, max_length=254)
file= models.CharField(null=False, max_length=254)
services= models.ForeignKey(Service, on_delete=models.CASCADE)
status = models.CharField(null=False, max_length=254)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
Views.py
def test_one(request):
comp_id = request.session['comp_id']
service = service.objects.filter(company_id=comp_id)
for services in service:
list = services.req_document_set.all()
print(service )
for i in service :
total_checklist = len(Requirements.objects.filter(services_id=i.id))
total_verified = len(Requirements.objects.filter(services_id=i.id, reqdoc_status='Verified'))
print(total_checklist)
print(total_verified)
context = {'service ': service , 'total_checklist': total_checklist, 'total_verified ': total_verified }
return render(request, 'test1.html', context)
test1.html
<table>
{% for services in service %}
<tr>
<td>{{services.services}}
<ul>
<li>Total Requirements Count = {{total_checklist}}</li>
<li>Total Verified Count = {{total_verified }}</li>
</ul>
</td>
</tr>
{% endfor %}
</table>
{服务%中的服务为%1}
{{services.services}
- 总需求计数={Total_checklist}
- 已验证总数={Total_Verified}
{%endfor%}
在终端上,我可以打印计数循环
3.
1.
0
0
这意味着我有2个服务,在第一个服务中,我有3个总需求和1个总需求验证,在第二个服务中,我有0个总需求和0个总验证需求。但是我不知道如何在HTML模板上显示它。当使用上述模板时,它只显示最后一个循环数据,这是第二个服务。
希望有人能告诉我怎么做。还不太熟悉ORM。因此,根据您的模型和您想要实现的目标: 模板
<table>
{% for service in services %}
<tr>
<td>{{ service.services }}
<ul>
<li>Total Requirements Count = {{ service.requirements_set.count }}</li>
<li>Total Verified Count = {{ service.get_verifed_req_count }}</li>
</ul>
</td>
</tr>
{% endfor %}
</table>
视图.py
class Service(models.Model):
service = models.CharField(null=False, max_length=254)
company = models.ForeignKey(Company_Data, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def get_verifed_req_count(self):
return self.requirements_set.filter(reqdoc_status='Verified').count()
class Requirements(models.Model):
Requirements = models.CharField(null=False, max_length=254)
file = models.CharField(null=False, max_length=254)
services = models.ForeignKey(Service, on_delete=models.CASCADE)
status = models.CharField(null=False, max_length=254)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def test_one(request):
comp_id = request.session['comp_id']
service = service.objects.filter(company_id=comp_id)
context = {'services': service}
return render(request, 'test1.html', context)
因此,根据您的模型和您想要实现的目标: 模板
<table>
{% for service in services %}
<tr>
<td>{{ service.services }}
<ul>
<li>Total Requirements Count = {{ service.requirements_set.count }}</li>
<li>Total Verified Count = {{ service.get_verifed_req_count }}</li>
</ul>
</td>
</tr>
{% endfor %}
</table>
视图.py
class Service(models.Model):
service = models.CharField(null=False, max_length=254)
company = models.ForeignKey(Company_Data, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def get_verifed_req_count(self):
return self.requirements_set.filter(reqdoc_status='Verified').count()
class Requirements(models.Model):
Requirements = models.CharField(null=False, max_length=254)
file = models.CharField(null=False, max_length=254)
services = models.ForeignKey(Service, on_delete=models.CASCADE)
status = models.CharField(null=False, max_length=254)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def test_one(request):
comp_id = request.session['comp_id']
service = service.objects.filter(company_id=comp_id)
context = {'services': service}
return render(request, 'test1.html', context)
您的
视图.py
中的请求信息是什么?@PedramParsian Oops。抱歉,它应该是服务在您的视图.py
?@PedramParsian Oops中是什么req\u info
。对不起,应该是服务的谢谢伙计。对我来说真的很有用,直到现在才真正了解这种函数<代码>def get_verifed_req_count(self):返回self.requirements_set.filter(reqdoc_status='Verified').count()
谢谢dude。对我来说真的很有用,直到现在才真正了解这种函数<代码>def get_verifed_req_count(self):返回self.requirements_set.filter(reqdoc_status='Verified').count()