@anderlan
senior django developer

Как вычислить количество id по связанной таблице?

Добрый день!
Не получается разобраться в правильности query_set.

Есть таблица Managers и таблица Magasines. То есть у каждого магазина есть свой менеджер.
Хочется вывести таблицу с менеджерами, в которой в первом столбце будет указано ФИО менеджера, а во втором количество магазинов, находящихся в их управлении.

Таблицы выглядят так:
сlass Magasines(models.Model):
	m_type = models.ForeignKey('MagasinesTypes', verbose_name='Тип')
	m_name = models.CharField(max_length=100, verbose_name='Название МО')
	m_manager = models.ForeignKey('Manager', null=True, blank=True, verbose_name='Менеджер')

class Manager(models.Model):
	manager_family = models.CharField(max_length=100, verbose_name='Фамилия')
	manager_name = models.CharField(max_length=100, verbose_name='Имя')
	manager_surname = models.CharField(max_length=100, null=True, blank=True, verbose_name='Отчество')


views.py
def ManagerView(request):
	manager = Manager.objects.all()
	manager_sum = Manager.objects.aggregate(Count('id'))
	cab_in_manager = Magasines.objects.annotate(Count('cab_manager_id'))
	# Сборка рендера
	rendering = {
		'manager': manager,
		'manager_sum': manager_sum,
		'cab_in_manager': cab_in_manager,
	}
	return render(request, 'manager.html', rendering)


и шаблон:
<table class="table">
			<tr>
				<th>ФИО</th>
				<th>Кол-во управляемых магазинов</td>
			</tr>
			{% for i in manager %}
			<tr>
				<td>{{ i.manager_family }} {{ i.manager_name }} {{ i.manager_surname }}</td>
				<td>{{ cab_in_manager.cab_in_manager__count }}
				<!--
					{% if cab_in_manager.cab_manager_id == i.manager_id %}
						{{ cab_in_manager.id__count }}
					{% endif %}
				-->
				</td>
			</tr>
			{% endfor %}


По всей видимости не могу разобраться в простейшем. Помогите
  • Вопрос задан
  • 126 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Manager.objects.annotate(magasines_count=models.Count('magasines_set'))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы