Django ORM "фильтр" метод производит SQL запрос без кавычек - PullRequest
1 голос
/ 03 февраля 2020

Я создаю приложение с Django, опираясь на несколько баз данных Posgre SQL, которыми я не управляю, назовем их базой данных A и базой данных B . Для каждой базы данных я использовал python manage.py inspectdb для создания моих models.py файлов.

Я пытаюсь использовать Django ORM для выполнения следующего запроса ( значительно упрощен здесь ) , to_date являющийся datetime.datetime объектом:

sample = my_model_in_B.objects\
    .filter(a_column=instance_of_a_model_in_A.name)\
        .exclude(another_column='Useless things')\
            .filter(a_column_with_dates__lte=to_date)

Моя проблема заключается в том, что он создает следующий запрос SQL:

SELECT "myschema"."mytable"."a_column", "myschema"."mytable"."another_column" from "myschema"."mytable"
WHERE "myschema"."mytable"."a_column" = Here is the name of instance_of_a_model_in_A
AND "myschema"."mytable"."a_column_with_dates" <= 2020-02-03
AND NOT ("myschema"."mytable"."another_column" = Useless things
AND "myschema"."mytable"."another_column" IS NOT NULL))

Другими словами, моя проблема заключается в том, что ORM Django автоматически не добавляет кавычки там, где они мне нужны . Я не понимаю, что я сделал не так. Я не знаю, имеет ли это значение, но учтите, что:

  • Я использую Django 2.2. и моя база данных B только POSTGRESQL 8,
  • Все столбцы, которые я использую, соответствуют CharField в моих моделях, кроме a_column_with_dates , что соответствует DateField.

Любая помощь приветствуется. Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...