【发布时间】:2021-10-23 22:50:43
【问题描述】:
型号
class Metric(models.Model):
date = models.DateField()
channel = models.CharField(max_length=50)
country = models.CharField(max_length=10)
os = models.CharField(max_length=10)
impressions = models.IntegerField()
clicks = models.IntegerField()
def __str__(self):
return "{} - {}".format(self.date, self.channel)
我的看法
class MetricViewSet(viewsets.ModelViewSet):
serializer_class = MetricSerializer
queryset = Metric.objects.all()
filter_backends = [DjangoFilterBackend]
filterset_class = MetricFilter
我的序列化器
class MetricSerializer(serializers.ModelSerializer):
class Meta:
model = Metric
fields = '__all__'
我需要按一列或多列分组:日期、频道、国家、操作系统并对其进行序列化。有人可以帮我解决一下吗?
select channel, country, sum(impressions) as impressions, sum(clicks) as clicks from sample dataset where date < '2017-06-01' group by channel, country order by clicks desc;
channel | country | impressions | clicks
------------------+---------+-------------+--------
adcolony | US | 532608 | 13089
apple_search_ads | US | 369993 | 11457
vungle | GB | 266470 | 9430
vungle | US | 266976 | 7937
【问题讨论】:
-
很高兴看到您期望获得的汇总响应示例,以便更好地理解。
ModelViewSet提供围绕Metric模型的某些操作,并将假定输入/输出具有MetricSerializer的架构。您可能需要使用自定义额外操作django-rest-framework.org/api-guide/viewsets/…。 -
@rootart - 我已经在问题中添加了它
标签: python django django-models django-rest-framework django-serializer