Как отфильтровать QuerySet по непустому prefetch_related

В самом prefetch_related используется фильтр:

prefetch_qs = Offer.objects.filter(price__gt=1000)
prefetch = Prefetch('offers', queryset=prefetch_qs)

Моя задача отфильтровать выборку из основной таблицы так, чтобы в нее не попали записи, для которых отфильтрованное поле offers пустое

filtered_qs = Product.objects.annotate(
    offers_count=Count('offers')
).filter(
    offers_count__gt=0
).prefetch_related(
    prefetch      
)

В этом случае в аннотации считается количество offers вообще, а не отфильтрованных в preftch_related. Поэтому результат получается неверный. Как отфильтровать выборку правильно?

UPD. Конечно можно продублировать фильтры из Prefetch, но это очень плохой вариант, т.к. фильтров может быть много и это как-то неудобно:

filtered_qs = Product.objects.annotate.filter(
    offers__price__gt=1000
).prefetch_related(
    prefetch      
)

Ответы (0 шт):