получение списка компаний вместе с количеством сотрудников из другой модели - PullRequest
1 голос
/ 15 мая 2019

У меня есть две модели Компания и Сотрудник, и я должен отображать записи, как показано ниже

Company Name, Number of Employee

```python
class Company(models.Model):
    name=models.CharField(max_length=20)
    est=models.IntegerField(max_length=4)

class employee(models.Model):
     name=models.CharField(max_length=20)
     company=models.ForeignKey(Company)
```

Как написать Django ORM Model, чтобы получить детали?

Ответы [ 2 ]

2 голосов
/ 15 мая 2019
from django.db.models import Count

Company.objects.values('name').annotate(emp_count=Count('employee'))

Это сгенерирует QuerySet объект как,

In [3]: Company.objects.values('name').annotate(emp_count=Count('employee')) 
   ...:                                                                                                                                                                                                            
Out[3]: <QuerySet [{'name': 'company_name_1', 'emp_count': 3}, {'name': 'company_name_2', 'emp_count': 2}]>
0 голосов
/ 15 мая 2019

Вы можете поместить related_name () в ForeignKey Relation следующим образом:

class Company(models.Model):
    name=models.CharField(max_length=20)
    est=models.IntegerField(max_length=4)

class employee(models.Model):
     name=models.CharField(max_length=20)
     company=models.ForeignKey(Company, related_name='employees')

Затем используйте Count , чтобы получить счет отмодель сотрудника и аннотировать значение для набора запросов.Как это:

<code>from django.db.models import Count
Company.objects.annotate(employee_count=Count(<b>'employees'</b>))  # same as <b>related_name</b> defined in employee model
...