Django Rest Framework - Какие представления использовать для простых агрегатов? - PullRequest
0 голосов
/ 06 ноября 2018

Я новичок в DRF и должен создать несколько конечных точек только для отображения простых статистических данных.

Что я хочу:

Я хочу создать простую конечную точку агрегирования с использованием представлений DRF или любым удобным способом DRF.

Первая конечная точка /users/total:

{
    "total_users": 5534
}

Вторая конечная точка /users/2009/january:

{
    "new_users": 12,
    "disabled_users": 2,
    "new_premium_users": 6,
}

Проблема:

Похоже, что большинство представлений DRF API предназначено для правильной работы при предоставлении списка моделей или отображении / манипулировании данными одной модели.

Есть ли удобный способ обработки простых конечных точек агрегирования? Любые идеи приветствуются.

1 Ответ

0 голосов
/ 06 ноября 2018

Простой пример из DRF документов и расширенный пример запроса django docs.

class TotalView(APIView):
    """
    get total push it over api
    """
    def get(self, request, format=None):

        total = User.objects.aggregate(
            silver=Sum(
                Case(When(is_silver=True, then=1),
                     output_field=IntegerField())
            ),
            gold=Sum(
                Case(When(is_gold=True, then=1),
                     output_field=IntegerField())
            ),
            platinum=Sum(
                Case(When(is_platinum=True, then=1),
                     output_field=IntegerField())
            )
        )


        return Response({"total": total })

Конечная точка:

    {
  "total": {
    "silver": 10,
    "gold": 3,
    "platinum": 15
     }
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...