вызовите ForeignKey и рассчитайте на шаблон django - PullRequest
0 голосов
/ 06 мая 2018

Я хочу посчитать, сколько сотрудников в каждом отделе и показать это на шаблоне 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 }} и ее работу. и я думаю, что это будет 1016 для подсчета работника. но его работа вмятина.

я что-то пропустил? ...

1 Ответ

0 голосов
/ 06 мая 2018

Вы должны поставить {{ company.company.count }}, чтобы это работало, потому что ваша related_name: company = models.ForeignKey (Company, default = 0, on_delete = models.SET_DEFAULT, related_name = 'company' )

Более подробную информацию можно найти здесь

Предполагается, но не обязательно, чтобы имя 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...