Django基于模型表路由到数据库
Posted
技术标签:
【中文标题】Django基于模型表路由到数据库【英文标题】:Django routing to database based on model table 【发布时间】:2013-11-23 04:52:15 【问题描述】:我有一个包含两个数据库的 Django (1.6) 项目。我有一个带有一个模型和多个表的应用程序。
我想使用数据库路由器将模型中的特定表设置为特定数据库。我找到的所有文档似乎都解释了如何将特定应用程序路由到特定数据库。
【问题讨论】:
【参考方案1】:看起来您可以为此使用自定义路由器和模型属性。
YMMV:还没有测试过。
https://docs.djangoproject.com/en/dev/topics/db/multi-db/#using-routers
class MyModel(models.Model):
_DATABASE = "foo"
class CustomRouter(object):
def db_for_read(self, model, **hints):
database = getattr(model, "_DATABASE", None)
return database
# repeat for db_for_write, etc.
【讨论】:
感谢您的回复@AKX。 “_DATABASE”是指表的名称吗?因此,如果我将所有表名命名为 name_DATABASE(其中 database 是我的另一个数据库的名称),它会以这种方式检测到它吗?你知道我是否可以只引用路由器中的表名吗?_DATABASE
的值仅引用在DATABASES
设置条目中声明的数据库名称。你可以从model._meta.db_table
找出表名。
这在 Django 1.11 中似乎不起作用。我在模型中添加了模型属性 DATABASE_NAME,但就我的自定义数据库路由器而言,它不存在。以上是关于Django基于模型表路由到数据库的主要内容,如果未能解决你的问题,请参考以下文章
Django实践-03模型-01表生成模型+学科页面与教师页面编写