Как использовать модели Django из одного приложения для подключения к реплике БД из второго приложения? - PullRequest
0 голосов
/ 24 сентября 2018

Моя система состоит из двух приложений, которые являются отдельными Django проектами (скажем, A и B ) с собственными базами данных по умолчанию и собственными пользователями.Приложение B также считывает из приложения A база данных реплика .

Чтобы добиться такого поведения, я включил приложение A в B s INSTALLED_APPS и может обращаться к реплике db через свои модели.Но все, что связано с пользователями (разрешениями, группами), перепутано.

Приводило ли использование django.contrib.auth в обоих приложениях к такому поведению, и есть ли лучшее решение для работы с репликами через Django ORM?

1 Ответ

0 голосов
/ 25 сентября 2018

Действительно, есть лучший способ.В мире джанго это называется DatabaseRouter.

Вы можете прочитать об этом здесь: https://docs.djangoproject.com/en/2.1/topics/db/multi-db/

Это очень исчерпывающее руководство о том, как достичь en-en db для вашего приложения django.

И вы всегда можете написатьПользовательский класс DatabaseRouter, который позволяет вам определять поведение, такое как: только чтение, только запись, полный доступ к ярлыку приложения или даже название вашей модели.

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

>>> # So will this.
>>> Author.objects.using('default').all()

>>> # This will run on the 'other' database.
>>> Author.objects.using('other').all()

Надеюсь, что это поможет - если у вас есть дополнительные вопросы - пожалуйста, задавайте.

...