年、月、日ごとに集計する

from django.db.models import Sum
from django.db.models.functions import TruncMonth

month_sales = Person.objects.annotate(
    month=TruncMonth('sales__date')).annotate(total_sales=Sum('sales__sale')
).values('month', 'name','total_sales').order_by('month')

print(month_sales)
TruncManthを使用することでデータを月毎にまとめることができます。
annotateでPersonモデルのmonthフィールドにsales__dateを月でまとめたもの(1日から31日までのデータが当月の1日としてまとめられる)を、total_salesには月でまとめたもののsaleの合計が代入されます。

TruncYearにすると年ごと、
TruncWeekにすると週ごと、
TruncDayにすると日ごと、
TruncHourにすると1時間ごと
にすることもできます。