LINUX.ORG.RU

админка django и схемы в postgres


0

0

Есть БД postgres, в ней есть база данных db и схема db_schema. Все таблицы хранятся в схеме. Получилось заставить джангу считывать данные из БД (в моделях через class Meta указывал db_name='"db_schema'.'db'" (работаю через psycopg2)

Но вот пришла пора делать админку, при попытке сделать syncdb получаю "не выбрана схема для создания объектов".

Как сказать джанге, какую схему использовать по умолчанию?

Если я правильно понял вопрос, то это DATABASE_NAME в settings.py Хотя, честно говоря, вопрос крайне странный.

AlexKiriukha ★★★★
()
Ответ на: комментарий от AlexKiriukha

Нет, DATABASE_NAME = это имя базы. В базе есть схемы, в которой уже и находятся таблицы с данными (база данных досталась в наследство). Вот мне и интересно, как сказать джанге, чтобы тыкалась в нужную схему.

Unnamed_Hero ★★★
() автор топика
Ответ на: комментарий от hizel

Спасибо за пинок в нужном направлении. Только не заработало. пропатчил django/db/backends/postgresql_psycopg2/base.py, добавил DATABASE_SCHEMAS='odb', но получил отлуп схема "o" не существует... В питоне пока новичёк... но попробую попинать доки.

Unnamed_Hero ★★★
() автор топика
Ответ на: комментарий от Unnamed_Hero

Таки с утра победил. в патче поменял cursor.execute("SET search_path TO %s" % ','.join (settings.DATABASE_SCHEMAS)) на

cursor.execute("SET search_path TO %s" ,[settings.DATABASE_SCHEMAS]) " и всё заработало.

Unnamed_Hero ★★★
() автор топика
Ответ на: комментарий от hizel

это тикет закрыт, как дубликат, а в якобы продублированном тикете такой огроменнный костыль, причём явно не доделанный...

Unnamed_Hero ★★★
() автор топика
Ответ на: комментарий от Unnamed_Hero

имхо там как раз не костыль, а решение позволяющее решить подобные проблемы не только для постгреса

и он доделанный, просто вешаешь свой обработчик на сигнал, и все )

Minmax
()
Ответ на: комментарий от Minmax

как-то это всё (пока) сложно для меня. там решение весьма простое (в закрытом тикете), работает только с постгресом, и занимает 5 строчек кода....Ну да ладно, самое главное - проблема решена.

Unnamed_Hero ★★★
() автор топика
Ответ на: комментарий от Unnamed_Hero

>добавил DATABASE_SCHEMAS='odb', но получил отлуп схема "o" не существует

Все просто, как пять копеек. Название DATABASE_SCHEMAS буквой "S" в конце намекает, что ожидается последовательность схем. Ты последовательность и передал, только строковую (т.е. ты говоришь, мол, используй схемы "o", "d" и "b").

Решать надо было не патченьем патча, а на своей стороне.

DATABASE_SCHEMAS = ['odb']

anonymous4
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.