Как грамотно реализовать работу с внешними данными?
Делаю свой первый прототип, сразу зашел в тупик.
Моё приложение должно активно использовать данные из уже существующей базы данных.
В ней есть соответствие между ID объектов и их названиями, различная информация об этих же объектах и т.п..
Как грамотно реализовать работу с этими внешними данными?
Например в базе django я хочу хранить только ID объектов, а их названия получать из другой базы. Проверять ID на валидность и т.п.
Вот смотрите: во внешней базе данных хранится информация о, продуктах, например.
Таблица имеет поля id, name, mass, size и т.д. которые описывают продукт. В этой базе ничего изменять не нужно, с ней работает другое приложение, данные изменяются поэтому просто экспортировать в другую базу не получится.
А django приложение должно сопоставлять 1 продукт с другим. Делаю 2 модели - одна представляет сопоставление (два поля с id) , вторая сам продукт (пока что только сам id).
Ну и собственно вопрос в том, как лучше всего реализовать выборку необходимой информации из внешней базы.
Ну и пока писал комментарий кажется сам понял - натравить inspectdb на существующую базу и работать с моделью продукта полностью в этой базе.
А как быть, если я захочу добавить к этой модели какое нибудь поле, например реализовать заметки? Во внешнюю базу ничего писать, а тем более изменять структуру нельзя.
в Django работа с несколькими базами данных осуществляется так.
При этом весь набор функционала Django (модели, менеджеры и пр.) доступен для всех баз вашего проекта.
l0ser140: в пределах одной - нет. Зато поддерживает внешние ключи на модели из другой базы. Т.о. вы создаете в default базе модель и кидаете внешний ключ на модели из вашей второй базы. Получается как раз описанная вами ситуация: в базе django - id объектов, во второй базе - все их данные
l0ser140: черт, без попутал! прошу прощения - одновременно несколько разных проектов на разных фреймворках :(
добавляйте в модель в вашей базе поле с идентификатором объекта из внешней и просто фильтруйте по нему модель, "смотрящую" на внешнюю базу