У меня есть приложение django (DRF), в котором я периодически храню данные временных рядов на основе ответа API. Вот моя модель.py
# Model to store the Alexa API Data
class Alexa(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
extra = jsonfield.JSONField(null=True)
rank = models.PositiveIntegerField(default=0, null=True)
Я использую django-фильтры для запроса данных на основе диапазона (__lte, __gte). Подобно /api/alexa/?created_at__lte=2020-02-14T09:15:52.329641Z
вернуть все данные, созданные до 2020-02-14T09:15:52.329641Z
[
{
"id": 1,
"created_at": "2020-02-03T19:30:57.868588Z",
"extra": "{'load_time': 00, 'backlink': 0}",
"rank": 0
},
...
]
Есть ли способ создать конечную точку для возврата агрегированных данных, сгруппированных по дням, неделям, месяцам и годам, на основе параметров запроса, которые я передаю. Например, /api/alexa/?created_at__lte=2020-02-14T09:15:52.329641Z&group_by=month
вернет
[
{
"created_at": "2020-01-01T00:00:00.000000Z",
"extra": "{'load_time': 00, 'backlink': 0}", <- Aggregated Data
"rank": 0 <- Aggregated Data
},
{
"created_at": "2020-02-01T00:00:00.000000Z",
"extra": "{'load_time': 00, 'backlink': 0}", <- Aggregated Data
"rank": 0 <- Aggregated Data
},
]
Вот мои текущие views.py
class AlexaViewSet(viewsets.ModelViewSet):
queryset = Alexa.objects.all()
filter_fields = {'created_at' : ['iexact', 'lte', 'gte']}
http_method_names = ['get', 'post', 'head']
Я видел несколько фрагментов, выполняющих агрегацию, но ни один из них полностью не удовлетворял моим требованиям и не давал мне полного представления о теме.
Я новичок в Django и создании аналитических панелей в целом, если есть какой-либо другой способ представления таких данных временных рядов для потребления на внешних графиках, я также был бы признателен за ваши предложения по этому поводу.
РЕДАКТИРОВАТЬ: вот мой serializer.py
class AlexaSerializer(serializers.ModelSerializer):
class Meta:
model = Alexa
fields = '__all__'