Запрос ниже работает как raw sql
SELECT WORK_ORDER.*,(SELECT COMPLETE FROM SAMPLE WHERE COMPLETE = 'TRUE' AND
ARF_ID = WORK_ORDER.ARF_ID AND ROWNUM <= 1) AS SAMPLE_COMPLETE, (DUE_DATE -
SYSDATE) AS DUE_IN FROM WORK_ORDER WHERE COMPLETE = 'FALSE' ORDER BY
DUE_DATE ASC
Следующий Django Queryset не работает
subquery = Sample.objects.filter(complete = 'TRUE', arf_id = models.OuterRef('arf_id'))[:1]
workOrderList = WorkOrder.objects.annotate(sample_complete= models.Subquery(subquery.values('complete'))).annotate(due_in= models.F('due_date') - datetime.now()).filter(complete = 'FALSE').order_by('due_date')
, который генерирует этот запрос при запуске workOrderList.query
SELECT "WORK_ORDER"."ARF_ID", "WORK_ORDER"."COMPANY_NAME",
"WORK_ORDER"."COMPANY_ADDRESS", "WORK_ORDER"."CONTACT_TELEPHONE",
"WORK_ORDER"."ORDER_DATE", "WORK_ORDER"."DUE_DATE",
"WORK_ORDER"."ARF_NUMBER", "WORK_ORDER"."COMPLETE",
"WORK_ORDER"."COMPLETE_DATE", "WORK_ORDER"."REPORTED",
"WORK_ORDER"."REPORTED_DATE", "WORK_ORDER"."COMPANY_CODE", (SELECT * FROM
(SELECT "_SUB".* FROM (SELECT U0."COMPLETE" AS Col1 FROM "SAMPLE" U0 WHERE
(U0."COMPLETE" = TRUE AND U0."ARF_ID" = ("WORK_ORDER"."ARF_ID"))) "_SUB"
WHERE ROWNUM <= 1)) AS "SAMPLE_COMPLETE", ("WORK_ORDER"."DUE_DATE" - 2019-
01-28 13:00:51.043013) AS "DUE_IN" FROM "WORK_ORDER" WHERE
"WORK_ORDER"."COMPLETE" = FALSE ORDER BY "WORK_ORDER"."DUE_DATE" ASC
Это возвращает ошибку
cx_Oracle.DatabaseError: ORA-00904: "WORK_ORDER"."ARF_ID": invalid identifier
Я использую Django 1.11.13, и это устаревшая база данных, мне удобно использовать raw sql для запроса данных, но я хотел бы изучить / использовать DjangoORM правильный путь, так что любое исправление или объяснение, почему это не сработает, полезно для меня.