Неожиданные фильтры в SQL для связанного менеджера.Похоже, что фильтры находятся в тех полях, где я установил значение по умолчанию в их объявлении в модели.
Мы обновились с Python 2.7 / Django 1.8 до Python 3.6 / Django 2.1 и начали видеть это неожиданное поведениев наших запросах ORM.
Учитывая модели
JobResponseGroup
- respondent
JobResponse
- job_response_group
- job_info_request
- answer
- audofile
- videofile
- imagefile
JobInfoRequest
- question_text
- internal_question (default=0)
print(jrg.jobresponse_set.filter(pk=1).values('id').query)
SELECT
"job_jobresponse"."id"
FROM
"job_jobresponse"
INNER JOIN "jobInfoRequest" ON ("job_jobresponse"."jobInfoRequest_id" = "jobInfoRequest"."id")
WHERE (((NOT ("job_jobresponse"."audioFile" = AND "job_jobresponse"."audioFile" IS NOT NULL) AND "job_jobresponse"."audioFile" IS NOT NULL) OR (NOT ("job_jobresponse"."videoFile" = AND "job_jobresponse"."videoFile" IS NOT NULL) AND "job_jobresponse"."videoFile" IS NOT NULL) OR (NOT ("job_jobresponse"."imageFile" = ) AND "job_jobresponse"."imageFile" IS NOT NULL) OR (NOT ("job_jobresponse"."imageFile2" = ) AND "job_jobresponse"."imageFile2" IS NOT NULL)) AND "jobInfoRequest"."internalQuestion" = 0 AND
"job_jobresponse"."group_id" = 16212728
AND "job_jobresponse"."id" = 1
)
Если у меня есть только одна группа ответа на вакансию, и я ищу ее ответ и ID для1, почему все остальные биты там фильтруются по внутреннему запросу, imageFile, audioFile и т. Д.
Я ищу ответы в заметках о выпуске django, но они появляются пустыми.Надеюсь, кто-то, кто обновился с 1.8 до 2.1, столкнулся с этим и может мне помочь?