Агрегирование в Django viewset - Django Rest Framework: - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть таблица со следующим атрибутом -

create_at = TimestampField (auto_now_add = True, auto_now_update = False, editable = False)
updated_at = TimestampField (null = True, auto_now_update = True, редактируемый = False)

И там работает одна служба, сначала входит в систему, и мы фиксируем made_at метку времени.

И через некоторое время после завершения службы скрипт обновляется атрибуты таблицы и мы фиксируем updated_at отметку времени.

Итак, теперь я хочу найти СРЕДНЕЕ время развертывания службы, т.е. добавление (updated_at-creation_at) деление на Всего служб или мы можем сказать общее количество строк в таблице.

Таким образом, этот запрос должен быть реализован в Django ORM и должен сериализоваться в конечную точку.

Чтобы эти данные можно было получать во внешнем интерфейсе.

Не могли бы вы, ребята, помочь мне здесь, что было бы весьма заметно?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020
I just came to these solutions.

queryset1=Model.objects.aggregate(y=(Max(F('updated_at')-F('created_at'),output_field=FloatField()))/60000000)

/60000000  to convert microsecond to minutes
AND

queryset = Model.objects.filter().values('attr1','attr2')\
           .annotate(min_time=Min(F('updated_at')- 
            F('created_at')),max_time=Max(F('updated_at')- 
            F('created_at')),avg_time=Avg(F('updated_at')- 
            F('created_at'))).order_by('attr1')
0 голосов
/ 25 апреля 2020

Обновление 1: Model.objects.annotate(avg_serv_dep=F('modified') - F('created')).aggregate(Avg('avg_serv_dep'))


Вы можете попробовать Model.objects.annotate(avg_serv_dep=Avg(F('updated_at') - F('created_at')))

...