调用ForeignKey并在django模板上计算它

时间:2018-05-06 02:29:36

标签: django django-templates

我想知道每个部门有多少员工,并在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 }}。但它的工作正在发挥作用。

我错过了什么吗?...

1 个答案:

答案 0 :(得分:1)

由于您的{{ company.company.count }} company = models.ForeignKey(公司,默认= 0,on_delete = models.SET_DEFAULT, related_name),您应该related_name使其正常工作= '公司'

More info can be found here

建议(但不要求)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