Добавление ограничения `unique_on` к фильтру аннотаций в Django
В Django, как использовать атрибут filter
в аннотации Sum()
для вычисления SUM только по атрибутам, которые принадлежат уникальной модели? В приведенном ниже блоке кода, как можно отфильтровать roi_avg
таким образом, который я могу описать только в этом псевдокоде: roi_avg = Sum(avg_field, filter= tweets_we_need + Q(tweets__twitter_calls__coin__id==Unique)
avg_field = F('tweets__twitter_calls__roi_plus_year')
tweets_we_need = (Q(tweets__created_at__date__lt=one_year_back) & ~Q(tweets__twitter_calls__roi_plus_year=None))
users = (
User.objects
.annotate(
roi_avg = Sum(avg_field, filter= tweets_we_need),
calls_count = Count('tweets', filter = tweets_we_need),
unique_coins = Count('tweets__twitter_calls__coin', filter = tweets_we_need, distinct=True)
)
.exclude(roi_avg=None)
.order_by("-roi_avg", "-unique_coins")
)