У меня есть две модели, как показано ниже.
Эти модели хранят бюджетные данные о продажах и фактические данные о продажах для каждого проекта по каждому месяцу.
# To test join on multiple keys
class ActualSales(models.Model):
time_id = models.CharField(max_length=8)
project = models.CharField(max_length=100)
actual_sales = models.DecimalField(max_digits=20, decimal_places=3)
adjustment = models.DecimalField(max_digits=20, decimal_places=3)
class BudgetSales(models.Model):
time_id = models.CharField(max_length=8)
project = models.CharField(max_length=100)
budget_sales = models.DecimalField(max_digits=20, decimal_places=3)
И данные будут выглядеть примерно так:
Model A
| time_id | project | sales | adjustment |
+---------+-----------+-------+------------+
| 2019JAN | Project A | 1000 | 10 |
| 2019JAN | Project B | 2500 | 5 |
| 2019FEB | Project A | 1100 | 0 |
| 2019FEB | Project B | 2400 | -10 |
+---------+-----------+-------+------------+
Model B
| time_id | project | budget |
+---------+-----------+--------+
| 2019JAN | Project A | 1100 |
| 2019JAN | Project B | 2400 |
| 2019FEB | Project A | 1000 |
| 2019FEB | Project B | 2500 |
+---------+-----------+--------+
И я стремлюсь создать массив объектов, каждый из которых представляет результат каждого проекта каждый месяц, аналогично как мы соединяем 2 таблицы с sql. Однако я не уверен, как написать сериализатор и API Viewset для этого.
[
{
time_id: "2019JAN",
project: "Project A",
sales: "1000",
adjustment: "10",
budget: "1100"
},
{
time_id: "2019JAN",
project: "Project B",
sales: "2500",
adjustment: "5",
budget: "2400"
},
{
time_id: "2019FEB",
project: "Project A",
sales: "1100",
adjustment: "0",
budget: "1000"
},
{
time_id: "2019FEB",
project: "Project B",
sales: "2400",
adjustment: "-10",
budget: "2500"
}
]