我假设您希望 django admin 只准备 OCS 数据库。
首先,您需要在 DATABASES 设置中定义外部数据库:
DATABASES = {
'default': {
... django db settings here ...
},
'ocs_db': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {
'read_default_file': '/path/to/my.cnf',
},
}
}
你可以python manage.py inspectdb --database ocs_db
试一试;inspectdb 在 db 上查找表并将模型定义转储为 python 模块。如果这不起作用,那么您必须手动进行。
然后,您希望 django 不管理该表(这样不会删除任何行,并且不会对表进行任何操作),您可以通过 Meta managed 选项来做到这一点。
我建议您使用此选项编写一个基类(以及最终所有 OCS 模型所需的其他自定义)。
class OCSBaseModel(models.Model):
def save(self):
"""
avoid inserts / edits from model
"""
return
class Meta():
abstract = True
managed = False
class Workstation(OCSBaseModel):
...
作为最后一步,您需要指示 Django 为 OCS 模型使用正确的数据库。
为此,您需要编写一个数据库路由器,如此处所述
或为 OCS 模型实现一个 django 模型管理器,将每个查询集标记到数据库。例如。
class OCSModelManager(models.Manager):
def get_query_set(self):
return super(OCSModelManager, self).get_query_set().using('ocs_db')
请注意,我没有测试任何这段代码;)