Приложения Django для совместного использования баз данных в Heroku: установите «общую» базу данных раз и навсегда - PullRequest
0 голосов
/ 15 мая 2018

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

from account.models import User

if DEBUG:  # Running locally
    users = User.objects.all()  # 'default' DB
else:  # Running on Heroku
    users = User.objects.using('shared').all()  # 'shared' DB

У меня есть два вопроса:

1) Задание базы данных shared для каждого оператора:действительно утомительно.Можно ли установить базу данных shared один раз для всех (возможно, в setting.py)?Например:

from account.models import User

if not DEBUG:  # Running on Heroku
    User = User.objects.using('share')   # This is hypothetical!!

users = User.objects.all()

2) Как установить базу данных shared для внешнего ключа.Например:

from account.models import User

class Article(models.Model):
    author = models.ForeignKey(User)  # How to set 'User' to come from 'shared' DB?

1 Ответ

0 голосов
/ 15 мая 2018
  1. У маршрутизаторов базы данных Django есть то, что вы ищете

https://docs.djangoproject.com/en/2.0/topics/db/multi-db/#using-routers\

Отношения не работают между базами данных

https://docs.djangoproject.com/en/dev//topics/db/multi-db/#limitations-of-multiple-databases

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...