Подключение и импорт моделей из нескольких подключений к базе данных Django

В приложении django у меня есть две базы данных postgresql, подключенные через settings.py: одна по умолчанию, а другая — AppDb. AppDb размещается на удаленной машине.

Я хочу запросить модель «Курсы» из AppDb, используя «using ()», а модель «Курсы» недоступна в базе данных по умолчанию.

Итак, мой запрос выглядит следующим образом:

courseInfo = Courses.objects.using('AppDb').filter(cuser_id = 12)

Но я получаю NameError для «Курсов».

Могу ли я иметь решение для таких запросов без использования маршрутизаторов


person escapee    schedule 18.07.2014    source источник
comment
Сначала убедитесь, что вы импортировали класс модели: from .models import Courses.   -  person Burhan Khalid    schedule 18.07.2014
comment
Есть ли способ импортировать модели из приложения, которое находится на удаленной машине?   -  person escapee    schedule 18.07.2014
comment
Какую реальную проблему вы пытаетесь решить? Ваш вопрос немного странный.   -  person Burhan Khalid    schedule 18.07.2014
comment
Я пытаюсь подключиться к удаленной базе данных, которая не является базой данных по умолчанию для приложения, и запрашиваю ее. Но модели не получают признания. Я не знаю, как их импортировать   -  person escapee    schedule 18.07.2014


Ответы (1)


Если у вас есть существующая база данных, вам все равно нужно создать приложение и модели для этой базы данных, чтобы использовать ORM.

Чтобы помочь вам создать классы моделей, вы можете использовать inspectdb команду управления который попытается угадать модели из существующей базы данных и создать для вас models.py. Это не идеально, но сэкономит вам время.

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

person Burhan Khalid    schedule 18.07.2014
comment
Спасибо за добавление ответа. Я попробовал какую-то часть этого и понял, что буду использовать метод cursor.connection. Поскольку создание моделей и приложений для меня не имеет смысла, если в них не хранятся данные. - person escapee; 21.07.2014