gpt4 book ai didi

Django - 如何为模型指定数据库?

转载 作者:行者123 更新时间:2023-11-28 19:37:40 25 4
gpt4 key购买 nike

有没有办法指定一个模型(或应用程序,甚至)应该只使用一个特定的数据库?

我正在使用一个我不想更改的遗留数据库。我有两个数据库——“默认”是一个可用于管理等的 sqlite 数据库,另一个是旧数据库。我使用 inspectdb 为(部分)遗留数据库创建了一个模型,它有 managed = False。但是有没有办法在模型本身中指定它只适用于特定的数据库?

我知道你可以 specify using=databasename在某些查询集中等,但这对 Databrowse 之类的东西没有好处(也可能是通用 View ?)。不能指定数据库可能是 Databrowse 的一个缺点,但似乎指定它的正确位置是模型......

然后我想也许答案是写一个自定义 model manager这仅指我的遗留数据库 - 但文档没有提及类似内容。

对于 Django 世界,我只是对如何使用多个数据库有不同的心理模型吗?

最佳答案

您不能为模型指定数据库,但可以在自定义数据库路由器类中定义它。

# app/models.py
class SomeModel(models.Model):
...

# app/dbrouters.py
from app.models import SomeModel
...
class MyDBRouter(object):

def db_for_read(self, model, **hints):
""" reading SomeModel from otherdb """
if model == SomeModel:
return 'otherdb'
return None

def db_for_write(self, model, **hints):
""" writing SomeModel to otherdb """
if model == SomeModel:
return 'otherdb'
return None


# app/settings.py
DATABASE_ROUTERS = ('app.dbrouters.MyDBRouter',)
...
DATABASES = {
...
'otherdb': {
....
}
}

关于Django - 如何为模型指定数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3519143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com