我是DRF的新手,应该创建几个端点以仅显示简单的统计数据。
我想使用DRF视图或任何方便的DRF方法创建简单的聚合终结点。
第一个端点/users/total
:
{
"total_users": 5534
}
第二个端点/users/2009/january
:
{
"new_users": 12,
"disabled_users": 2,
"new_premium_users": 6,
}
在提供模型列表或显示/处理单个模型的数据时,大多数DRF API视图看起来都可以正常工作。
有什么方便的方法来处理简单的聚合端点?任何见解都很感激。
答案 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
}
}