Добавьте действие для фильтрации вложенных 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.

Спасибо

Вернуться на верх