自身を呼び出しているモデルのデータを使ってフィルタリングする

from django.db.models import Subquery, OuterRef

last_sales_date = Sales.objects.filter(
    name=OuterRef('pk')
   ).order_by('-date').values('date')[:1]

model = Person.objects.annotate(
    last_sale_date=Subquery(last_sales_date))

print(model.values('name', 'last_sale_date'))
SubqueryとOuterRefを使用することによって、自身を呼び出しているデータを使用してフィルタリングし、そのデータをannotateで追加することができます。

Subqueryは複数データがある状態が返ってくるとエラーになるので返ってくるデータが1つになるようにしてください。

上の例は、OuterRefを使用して、自身を呼び出しているモデル(Person)のpkを使用してフィルタリングしています。
last_sales_dateはnameフィールドが自身を呼び出しているモデルのpkのデータを取得し、それをdateで降順にし、最初の1件目を取得しています。

Subqueryはannotateにほかのモデルのデータを埋め込むのに使用され、ここでは、変数last_sales_dateで処理された結果がlast_sale_dateフィールドに代入されています。

上の例では、PersonモデルごとのSalesモデルのsaleが最新のもの(最終売上日)をlast_sale_dateフィールドに代入している例となります。