def month_details(self, request): date = to_pydate(request.query_params.get('date')) kind = request.query_params.get('kind') kind = kind if len(kind) == 3 else kind[:3] qs = self.get_queryset().filter(kind=kind).annotate_with_amount(first_day(date), last_day(date)) result = [] for category in qs: if category.transactions_amount: data = { 'key': category.name, 'y': category.transactions_amount, } result.append(data) return Response({'result': result})
def get_amount(self, kind, fr=None, to=None): fr = fr if fr else first_day() to = to if to else last_day() result = self.filter(kind=kind, date__gte=fr, date__lte=to) result = result.aggregate(Sum('amount')) return result['amount__sum'] or 0