Django, подзапрос exists всегда возвращает False

Я столкнулся с проблемой, что мой подзапрос возвращает False, хотя должен возвращать True.

from wagtail.models import WorkflowState, Page, Workflow
import pytest


def test_filter_pages(user):
    page = PageFactory.create(
        owner=user,
        live=False,
        latest_revision_created_at=timezone.now(),
    )
    WorkflowState.objects.create(
        content_type=ContentType.objects.get_for_model(Article),
        base_content_type=ContentType.objects.get_for_model(Page),
        object_id=str(page.pk),
        workflow=Workflow.objects.get(name="Moderators approval"),
        status=WorkflowState.STATUS_IN_PROGRESS,
        requested_by=user,
    )
    workflow_states = WorkflowState.objects.filter(
        status=WorkflowState.STATUS_IN_PROGRESS, object_id=str(OuterRef("pk"))
    )
    queryset = (
        Page.objects.select_related("owner", "latest_revision")
        .annotate(workflow_state_status=Exists(workflow_states))
        .filter(owner=user)
    )
    lists_ids = [
        page.id
        for page in queryset
        if page.workflow_state_status
    ]
    assert lists_ids != 0

В этом тесте есть только одна страница, которая должна иметь состояние рабочего процесса. Но тест проваливается при list_ids = 0. Что здесь не так?

Более того, когда я пытаюсь заменить workflow_state_status на простой

WorkflowState.objects.filter(
            object_id=self.pk,
            status=WorkflowState.STATUS_IN_PROGRESS,
        ).exists()

все работает корректно (кроме запросов к базе данных)

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