2015-02-26 5 views
1

У меня есть два приложения для django, назовите их Main на сервере A и Tasker на сервере B. Main отвечает на запросы пользователей и делает много вещей, которые можно быстро выполнить. С другой стороны, Tasker имеет только несколько моделей для ведения журналов и сельдерея.Модели приложений Django для разных баз данных

На сервере A, «tasker» не включен в INSTALLED_APPS, поскольку он мне не нужен, тогда как на сервере B, это так.

С django's documentation, я создать маршрутизатор и определен db_for_read и db_for_write

class ModelsRouter(object): 
    """ 
     Logging models are on local, 
     but updated models are on another server 
    """ 
    def db_for_read(self, model, **hints): 
     if model._meta.app_label == 'tasker': 
      return 'tasker' 
     return None 

    def db_for_write(self, model, **hints): 
     if model._meta.app_label == 'tasker': 
      return 'tasker' 
     return None 

На сервере B, DATABASES установка содержит два ключа:

  • default, указывающие на сервер А
  • tasker указывая на localhost

У меня есть проблема в том, что, когда я запускаю manage.py migrate, модели tasker созданы на сервере A. Как я могу установить проект на сервере B, чтобы быть в курсе следующие: - модели main приложений находятся на сервере A - модели tasker находятся на сервере B (также localhost)?

ответ

0

мне удалось решить эту проблему следующим образом:

  • Я изменил ModelsRouter использовать main конфигурации базы данных, если модели не из приложения tasker
  • на сервере, где я развернутого tasker, я изменил DATABASES так а default указывает на localhost и main указывает на другой сервер, на котором находится main

На сервере B я побежал manage.py migrate tasker, так как другие модели не нужны в этой базе данных. Он сейчас работает:

  • регистрация осуществляется в таблицах на сервере B
  • обновления выполняются на другом сервере

Проблема я столкнулся при работе manage.py migrate tasker это:

RuntimeError: Error creating new content types. Please make sure contenttypes is migrated before trying to migrate apps individually. 

но я справимся.

Смежные вопросы