Я пришел сегодня с вопросом о дизайне / архитектуре, касающемся Джанго.
Я работаю на нескольких веб-сайтах (размещенных на одном сервере), которым по отдельности нужны географические данные (штаты, города и т. Д.). Каждый проект содержит приложения, и каждое приложение может содержать модели с полями ForeignKey
для города или штата.
Чтобы не повторяться, я не хочу создавать базу данных для хранения этих городов и штатов и использовать ее в проектах Django .
Django предоставляет простой способ использовать несколько баз данных в одном проекте, объявив его в файле settings.py
и записав классы маршрутизаторов для хранения материалов для чтения и записи. Но таким образом, невозможно использовать select_related
выражение вроде:
job = get_object_or_404(Jobs.objects.select_related('state__town'), user=user)
Для меня это естественное поведение (невозможно объединить базы данных с нуля) ...
Мои вопросы:
- Это хорошая идея рассмотреть вопрос о введении dblinks (я так не думаю ...) и может ли Django справиться с этим (я не нашел никаких документов для этой части)?
- Как бы вы поступили, столкнувшись с такой ситуацией?
Быстрое и грязное решение состояло бы в том, чтобы импортировать все геоданные (города, штаты ...) в каждую базу данных проекта, но это вовсе не СУХОЙ :(:
python manage.py loaddata geo.json
Другое решение может заключаться в создании отдельного «гео» приложения, которое могло бы «обслуживать» (я не знаю, как) данные для других проектов ... На самом деле я пытался GeoDjango , но кажется, это действительно сложно, и, вероятно, не ответит на мой вопрос!
Заранее большое спасибо за ответы!