Как преобразовать sql-скрипт в python (django-rest-framework)
у меня есть две таблицы
class Events(models.Model):
install_time = models.DateTimeField()
event_time = models.DateTimeField(primary_key=True)
appsflyer_id = models.CharField(max_length=255, blank=True)
media_source = models.CharField(max_length=255, blank=True)
campaign = models.CharField(max_length=255, blank=True)
platform = models.CharField(max_length=255, blank=True)
event_name = models.CharField(max_length=255, blank=True)
event_revenue = models.DecimalField(max_digits=30, decimal_places=10, blank=True)
event_revenue_usd = models.DecimalField(max_digits=30, decimal_places=10, blank=True)
class Installs1(models.Model):
install_time = models.DateTimeField()
event_time = models.DateTimeField(primary_key=True)
appsflyer_id = models.CharField(max_length=255, blank=True)
media_source = models.CharField(max_length=255, blank=True)
campaign = models.CharField(max_length=255, blank=True)
platform = models.CharField(max_length=255, blank=True)
event_name = models.CharField(max_length=255, blank=True)
event_revenue = models.DecimalField(max_digits=30, decimal_places=20, blank=True)
event_revenue_usd = models.DecimalField(max_digits=30, decimal_places=20, blank=True)
и иметь SQL-скрипт
with a as (
select
campaign ,
sum(event_revenue) as event_revenue_sum,
sum(event_revenue_usd) as event_revenue_usd_sum from events e
where e.event_time::date between '2020-06-11' and '2020-06-16'
group by campaign
),
b as (
select
campaign,
count(event_name) as count_installs
from installs1 i
group by campaign
)
select *
from a
left join b
on a.campaign = b.campaign
я не понимаю, как преобразовать это в код django, чтобы отображать в режиме просмотра, а не в полном
Это мое мнение, но оно не работает
class ReportsView(ListAPIView):
queryset = Events.objects.all()
serializer_class = ReportsGenerationSerializer
def get_queryset(self):
return Events.objects.aggregate(event_revenue_sum = Sum('event_revenue'),
event_revenue_usd_sum = Sum('event_revenue_usd'))
мой сериализатор
class ReportsGenerationSerializer(serializers.Serializer):
event_revenue_sum = serializers.IntegerField()
event_revenue_usd_sum = serializers.IntegerField()
class Meta:
model = Events
fields = ('campaign', 'event_revenue_sum', 'event_revenue_usd_sum')
Как мне нужно перевести этот сложный скрипт? Я совершенно не имею представления, документация мне не помогла(
).