Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:查询父项时在HTML模板中显示子项的计数_Python_Django_Orm - Fatal编程技术网

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()