Добавьте действие для фильтрации вложенных API
У меня есть две модели с отношениями один ко многим, и я хотел бы добавить действие, чтобы иметь возможность перечислить все объекты A (стартапы) с по крайней мере одним вложенным объектом B, имеющим атрибут active в True.
Я добавил это дополнительное действие, однако оно возвращает ошибку: 'Q' object is not callable
вот мой код :
@action(detail=False, methods=['get'])
def get_active_startups(self, request, pk=None):
Startup.objects.annotate(
active_investments=Count('startup_investments', filter=Q(startup_investments__active=True)).filter(
active_investments__gt=0))
Мой второй вопрос: если этот код работает, будет ли он попадать в БД каждый раз, когда я запрашиваю этот список? Если да, то есть ли лучший способ сделать то же самое на уровне сериализатора?
Вот мои сериализаторы :
class InvestmentSerializer(serializers.ModelSerializer):
class Meta:
model = Investment
fields = ('id', 'Investment_title', 'collected_amount', 'goal_percentage', 'number_of_investors',
'days_left', 'active')
class StartupSerializer(serializers.ModelSerializer):
startup_investments = InvestmentSerializer(many=True, read_only=True)
class Meta:
model = Startup
fields = ('id', 'header', 'title', 'description', 'tags', 'card_image',
'logo_image', 'main_img', 'startup_investments')
Я хочу перечислить стартапы с хотя бы одной инвестицией, у которых поле active установлено в true.
Спасибо