首页 > 解决方案 > 调用 ForeignKey 并在 django 模板上计算它

问题描述

我想计算每个部门有多少员工并将其显示在 django 模板上。

我在这里models.py

class Company(models.Model):

    name = models.CharField(max_length=100)
    desc = models.TextField(blank=True, null=True, default='Tidak ada deskripsi')

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse("system:company_list")

class Employee(models.Model):
    name = models.CharField(max_length=100)
    company = models.ForeignKey(Company, default=0, on_delete=models.SET_DEFAULT, related_name='company')

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse("system:detail",kwargs={'pk':self.pk})

在这里我的views.py

class CompanyListView(ListView):
    context_object_name = 'companys'
    model = models.Company

在这里我的company_list.html

{% for company in companys %} 

<tr>
    <td>{{ company.name }}</td>
    <td>{{ companys.employee.count }}</td>
    <td>{{ company.desc }}</td>
</tr>

{% endfor %}

我正在尝试计算公司{{ companys.count }}及其工作。我认为这将{{ companys.employee.count }}用于计算员工人数。但它的功劳。

我错过了什么?...

标签: djangodjango-templates

解决方案


你应该{{ company.company.count }}让它工作,因为你related_namecompany = models.ForeignKey(Company, default=0, on_delete=models.SET_DEFAULT, related_name ='company' )

更多信息可以在这里找到

建议但不要求 a 的名称是related_name当前模型的复数形式

class Employee(models.Model):
    name = models.CharField(max_length=100)
    company = models.ForeignKey(Company, default=0, on_delete=models.SET_DEFAULT, related_name='employees')

所以在这种情况下,你会在模板中

{{ company.employees.count }} # count
{{ company.employees.all }} # All employees

推荐阅读