Aggregate/annotate based on 2 different models

Just a side note, without addressing the specifics of the implementation of your available method:

In general, this type of function more properly belongs in a custom model manager and not in the model itself.

A model method should relate to one specific instance of the model. A model manager method is more appropriate where the method refers to a collection of model instances. That type of method can be used directly to retrieve a value, or be written as a subquery to be used within other queries, or as a custom queryset - you have lots of options at that point.