Задача следующая:
У меня есть таблица объекта и данные к этой таблице.
Данные в форматe:
class Data(models.Model):
table = models.ForeignKey(Table, on_delete=models.CASCADE)
date = models.DateField('Дата')
value1 = models.FloatField('Выручка')
value2 = models.FloatField('Себестоимость')
value3 = models.FloatField('Валовая прибыль')
#данные чисто для примера
Таких объектов штук 10, тянутся по фильтру.
Мне нужно собрать все эти объекты в такой формат:
date:[date1,date2,date3,..]
value1:[value1,value1,value1,..]
value2:[value2,value2,value2,..]
При этом должна работать кастомная пагинация. Данные должны выводиться постранично: page=1 - это все данные за первый имеющийся год в таблице (его можно тянуть из date). page-2 это все данные за следующий год.
Вопрос:
Как правильно реализовать всю эту архитектуру? Использовать чистый APIView и абсолютно все писать руками, или настраивать всю эту логику с помощью сериализаторов и viewset'ов?
Если второе - какая часть должна быть реализована в сериализаторе, а какая в viewset'ах? Какие функции должны быть переопределены и там, и там? Как написать эту кастомную пагинацию, имею ввиду: где она должна быть написана и как ее прикрепить (Если можно, прикрепите пожалуйста примеры)?
Заранее большое спасибо)