所以我在https://docs.djangoproject.com/en/dev/topics/db/multi-db/阅读了多个数据库文档并且它非常有帮助。我得到了如何在setting.py中显示第二个数据库以及如何通过命令提示符同步它。但我无法弄清楚的是如何指定如何使某个模型同步/保存在第二个数据库中。特别是如果我没有明确说明。
与用户一样。
如果我使用django的用户类来创建用户,那么如何将其保存到第二个数据库呢?
答案 0 :(得分:1)
请仔细阅读您提供的文档。文档的Automatic databse routing部分准确回答了您的问题 用户数据库的路由取决于您的实际使用情况和分区策略,没有一句话答案。用户可以在文档中找到示例,您可以阅读并检查本地计算机。
答案 1 :(得分:1)
(直接来自Django DOCS的代码:https://docs.djangoproject.com/en/dev/topics/db/multi-db/#automatic-database-routing
路由器处理应在哪个数据库中获取或设置数据。
如果您想为您的应用程序使用路由器(名为“myapp”)
class MyAppRouter(object):
"""A router to control all database operations on models in
the myapp application"""
def db_for_read(self, model, **hints):
"Point all operations on myapp models to 'other'"
if model._meta.app_label == 'myapp':
return 'other'
return None
def db_for_write(self, model, **hints):
"Point all operations on myapp models to 'other'"
if model._meta.app_label == 'myapp':
return 'other'
return None
def allow_relation(self, obj1, obj2, **hints):
"Allow any relation if a model in myapp is involved"
if obj1._meta.app_label == 'myapp' or obj2._meta.app_label == 'myapp':
return True
return None
def allow_syncdb(self, db, model):
"Make sure the myapp app only appears on the 'other' db"
if db == 'other':
return model._meta.app_label == 'myapp'
elif model._meta.app_label == 'myapp':
return False
return None
通过向settings.py添加下一行,将在其自己的数据库(名为“other”)中创建/保存/处理所有“myapp”应用程序数据。所有其他应用程序都使用默认数据库。
DATABASE_ROUTERS = ['path.to.MyAppRouter']
路由器可以保存在任何您想要的地方。只需修复settings.DATABASE_ROUTERS。
的路径