1👍
Because you want to fetch all averages from db anyway, I would calculate the sum of all values in Python, after fetching the data.
First, lets simplify the queryset:
queryset = Account.objects.filter(assessed_from__domain__in=domains).annotate(
domain=F('assessed_from__domain'),
average=Avg("assessed_from__accountevaluationresult__calculated_rating",
filter=Q(assessed_from__updated__range=(start_date, end_date)
).values('domain', 'average')
This can be done using vanilla Python like:
total_sum = sum(d.average for d in queryset)
This can also be done faster using Pandas, like:
df = pd.DataFrame(queryset)
total_sum = df['average'].agg('sum')
With this approach, you can also serialize it to JSON easier:
df = df.append({"domain": "domains_totals", "average": total_sum}, ignore_index=True)
df = df.set_index("domain")
json_str = df['average'].to_json()
Source:stackexchange.com