所以我阅读了https://docs.djangoproject.com/en/dev/topics/db/multi-db/上的多个数据库文档,它很有帮助。我知道了如何在 setting.py 中显示第二个数据库以及如何通过命令提示符同步它。但我不知道如何指定如何使某个模型同步到/保存在第二个数据库中。特别是如果我没有明确说明。
喜欢用户。
如果我使用 django 的用户类来创建用户,那么如何将其保存到第二个数据库中?
所以我阅读了https://docs.djangoproject.com/en/dev/topics/db/multi-db/上的多个数据库文档,它很有帮助。我知道了如何在 setting.py 中显示第二个数据库以及如何通过命令提示符同步它。但我不知道如何指定如何使某个模型同步到/保存在第二个数据库中。特别是如果我没有明确说明。
喜欢用户。
如果我使用 django 的用户类来创建用户,那么如何将其保存到第二个数据库中?
(直接来自 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 添加下一行,所有“myapp”应用程序数据都将在其自己的数据库(名为“其他”)中创建/保存/处理。所有其余的应用程序都使用默认数据库。
DATABASE_ROUTERS = ['path.to.MyAppRouter']
路由器可以保存在您想要的任何地方。只需修复 settings.DATABASE_ROUTERS 的路径即可。
请再次仔细阅读您提供的文档。文档的自动数据库路由部分准确地回答了您的问题。
User DB的路由取决于你的实际使用情况和分区策略,没有一句回答。用户文档中有示例,您可以阅读并检查本地计算机。