Django Rest Framework-用于简单聚合的视图?

时间:2018-11-06 09:37:20

标签: django-rest-framework

我是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 :(得分:2)

来自DRF文档和advanced query example django文档的简单示例。

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
     }
   }