我有一个名为Requests
的模型,我希望将其保存在与默认django数据库不同的数据库中。
这样做的原因是该表将记录analytics
的每个请求,并且将会非常重要。因为我每小时进行数据库备份所以我不想仅为该表增加db大小。
所以我考虑放入单独的数据库,这样我就不会经常备份它。
这个文档就是这样说的 https://docs.djangoproject.com/en/dev/topics/db/multi-db/
def db_for_read(self, model, **hints):
"""
Reads go to a randomly-chosen slave.
"""
return random.choice(['slave1', 'slave2'])
def db_for_write(self, model, **hints):
"""
Writes always go to master.
"""
return 'master'
现在我不确定如果我的模型为Requests
,我如何检查,然后选择database A
其他database B
答案 0 :(得分:0)
模型只是类 - 所以检查,如果你有正确的类。这个例子适合你:
from analytics.models import Requests
def db_for_read(self, model, **hints):
"""
Reads go to default database, unless it is about requests
"""
if model is Requests:
return 'database_A'
else:
return 'database_B'
def db_for_write(self, model, **hints):
"""
Writes go to default database, unless it is about requests
"""
if model is Requests:
return 'database_A'
else:
return 'database_B'
如果您愿意,您也可以使用其他一些技巧(例如检查model.__name__
或查看model._meta
)。
但需要注意的是:请求不应该有外键将它们连接到其他数据库中的模型。但你可能已经知道了。