Здравствуйте!
Суть вопроса в следующем. Пробую написать простое приложение по сбору числа рабочих на объектах. Есть модели
models
class SObjects(models.Model):
title = models.CharField(max_lenght=128)
class Subpodr(models.Model):
sobj = models.ForeignKey(SObjects)
name = models.CharField(max_lenght=128)
class Peoples(models.Model):
sobj = models.ForeignKey(SObjects)
subpodr = ForeignKey(Subpodr)
date = models.DateField(default=datetime.datetime.today())
rab = models.IntegerField(default = 0)
Соответственно SObjects - модель с описанием объектов, на которых работают люди.
Subpodr - субподрядные организации (На одном объекте может быть несколько организаций)
Peoples - модель, собирающая численность рабочих.
На веб странице хочу выводить следующим образом.
На главной в виде таблицы с датами и суммой рабочих по объекту на каждый день.
При нажатии на объект список с подрядчиками и численность по датам.
Вопрос как из базы вернуть словарь с (данные будут выбираться всегда за месяц)
{Дата : {Объект 1: {Подрядчик 1: Кол-во Рабочих, Подрядчик 2: Кол-во рабочих}}, Дата 2 ....}
Или в любом другом удобном виде.
Смотреть думаю надо в сторону либо annotate, aggregate или в чистый sql (extra)
Написал функцию которая считает сумму людей по 1 объекту за определённый день
def calc(sobj, date):
return Peoples.objects.filter(date=date, sobj=sobj).aggregate(Sum('rab'))