Django QuerySet способ выбора из табличной функции sql - PullRequest
0 голосов
/ 06 июля 2011

все.

Я работаю с Django 1.3 и Postgres 9.0.У меня есть очень сложный SQL-запрос, который расширяет простой поиск таблицы модели с некоторыми дополнительными полями.И она обернута в табличную функцию, так как она параметризована.
За месяц до того, как мне удалось заставить ее работать с помощью необработанного запроса, но в RawQuerySet отсутствует множество функций, которые мне действительно нужны (filters, count () и clone ()методы, цепочечность).
Идея выглядит просто.QuerySet позволяет мне выполнить этот запрос:

SELECT "table"."field1", ... ,"table"."fieldN" FROM "table"

, тогда как мне нужно сделать это:

SELECT "table"."field1", ... ,"table"."fieldN" FROM proxy(param1, param2)

Итак, вопрос: как я могу это сделать?Я уже начал создавать собственный менеджер, но не могу заменить model.db_table пользовательской строкой (потому что он цитируется, и база данных перестает распознавать вызов функции).
Если нет способа заменить таблицу функцией, я бы хотелузнать, могу ли я создать QuerySet из RawQuerySet (не самое чистое решение, но простой RawQuerySet приносит такую ​​боль в ... одну часть тела).

1 Ответ

1 голос
/ 06 июля 2011

Если ваше требование заключается в том, что вы хотите использовать Raw SQL в целях повышения эффективности и при этом иметь доступ к методам модели, вам действительно нужна библиотека для сопоставления того, какие поля SQL являются столбцами каких моделей.

И эта библиотека, Unjoinify

...