假设一个应该使用两个MySQL数据库的Django应用程序:
default- 用于存储由模型表示的数据A和B(读写访问)support- 用于导入由模型表示的数据C和D(只读访问)该support数据库是一个外部应用程序的一部分,并且不能修改.
由于Django的应用程序使用内置的ORM的模型A和B我想它应该使用同样的ORM的模型C和D,即使它们映射到外部数据库表(support.)
为了实现我定义的模型C,D如下:
from django.db import models
class ExternalModel(models.Model):
class Meta:
managed = False
abstract = True
class ModelC(ExternalModel):
some_field = models.TextField(db_column='some_field')
class Meta(ExternalModel.Meta):
db_table = 'some_table_c'
class ModelD(ExternalModel):
some_other_field = models.TextField(db_column='some_other_field')
class Meta(ExternalModel.Meta):
db_table = 'some_table_d'
Run Code Online (Sandbox Code Playgroud)
然后我定义了数据库路由器:
from myapp.myapp.models import ExternalModel
class DatabaseRouter(object):
def db_for_read(self, model, …Run Code Online (Sandbox Code Playgroud)