Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 21, 2011 01:07:59

zili
От:
Зарегистрирован: 2010-05-19
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

Automatic database routing

Есть два Django проекта…каталог фирм, каталог товаров…нужно в каталоге товаров получить доступ каталогу фирм…

файл models.py от каталога фирм копирую в каталог товаров
нужно чтобы заработал следующий код в models.py каталога товаров

 company = models.ForeignKey(firms)
где firms это модель базы каталога фирм, и соответственно данные должны браться у БД каталога фирм

Гуглю и нахожу Multiple databases, подключаю две БД
Теперь нужно настроить роутинг ДБ, чтобы если таблица firms не будет найдена в базе данных по умолчанию, данные брались со второй БД

Вот пример роутера с офф, доки
 
class MyAppRouter(object):
"""A router to control all database operations on models in
the myapp application"""

def db_for_read(self, model, **hints):
"Point all operations on myapp models to 'other'"
if model._meta.app_label == 'myapp':
return 'other'
return None

def db_for_write(self, model, **hints):
"Point all operations on myapp models to 'other'"
if model._meta.app_label == 'myapp':
return 'other'
return None

def allow_relation(self, obj1, obj2, **hints):
"Allow any relation if a model in myapp is involved"
if obj1._meta.app_label == 'myapp' or obj2._meta.app_label == 'myapp':
return True
return None

def allow_syncdb(self, db, model):
"Make sure the myapp app only appears on the 'other' db"
if db == 'other':
return model._meta.app_label == 'myapp'
elif model._meta.app_label == 'myapp':
return False
return None

class MasterSlaveRouter(object):
"""A router that sets up a simple master/slave configuration"""

def db_for_read(self, model, **hints):
"Point all read operations to a random slave"
return random.choice(['slave1','slave2'])

def db_for_write(self, model, **hints):
"Point all write operations to the master"
return 'master'

def allow_relation(self, obj1, obj2, **hints):
"Allow any relation between two objects in the db pool"
db_list = ('master','slave1','slave2')
if obj1._state.db in db_list and obj2._state.db in db_list:
return True
return None

def allow_syncdb(self, db, model):
"Explicitly put all models on all databases."
return True
Помогите правильно написать роутер и правильно настроить связь ForeignKey между ДБ
Спасибо !



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version