Вы можете использовать Prefetch
-объект [Django-doc] (не путать с вызовом .prefetch_related(..)
) и выполнить некоторую фильтрацию в этой точке.
Например:
A.objects.filter(
a_flag=True
).prefetch_related(
<b>Prefetch('b_set', queryset=B.objects.filter(b_flag=True), to_attr='b_pos')</b>
)
Так что теперь QuerySet
будет содержать коллекцию A
с атрибутом b_pos
, который содержит связанные B
объекты, нос b_flag=True
.
Так, учитывая, что есть три связанных B
s для данного A
объекта, но только два имеют b_flag=True
, тогда b_pos
будет содержать эти два.
Я бы действительно посоветовал , а не , нацелиться на b_set
, так как если вы передадите объект A
методу, этот метод будет предполагать, что b_set
просто предоставляет все реализованные B
s.