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

Я хочу использовать администратора Django для просмотра существующей базы данных, но я хочу быть уверенным, что ни я, ни Django не будем вносить какие-либо изменения в эту базу данных.

По этой причине я думаю, что мне следует использовать две базы данных: одну, предназначенную только для чтения, и одну, в которой будут храниться другие таблицы django, и одну, к которой у меня есть доступ для чтения и записи.

Я знаю, как определить несколько баз данных в settings.py, но я не знаю, как заставить django использовать другую базу данных для определенных моделей.


person sorin    schedule 09.06.2011    source источник


Ответы (2)


Вы можете использовать Automatic database routing для настройки база данных операций чтения/записи для каждой модели

Or

Вы также можете настроить базу данных операций чтения/записи интерфейса администратора (предоставление нескольких баз данных в административном интерфейсе Django) с аргументом using наборов запросов.

В обоих случаях установите базу данных для чтения/записи по умолчанию (там будут сохраняться модели django) и явно направляйте запросы к вашей базе данных только для чтения для ваших моделей.

person manji    schedule 09.06.2011

В дополнение к ответу manji вы также можете использовать представления базы данных и отображать некоторые таблицы как доступные только для чтения. Использование представлений с Django — это мощная техника, которая позволяет отображать произвольно сложные запросы как модели Django.

В вашем случае вы могли бы, например. создайте дополнительную базу данных с VIEW, отражающими соответствующие таблицы из исходной базы данных, и создайте дополнительный проект Django с включенным только администратором для этих таблиц - или что-то в этом роде (вы знаете свой вариант использования лучше, чем я).

person Tomasz Zieliński    schedule 09.06.2011