因此,我阅读了多个数据库文档https://docs.djangoproject.com/en/dev/topics/db/multi-db/,这是非常有帮助的。我得到了如何在setting.py中显示第二个数据库以及如何通过命令提示符同步它。但我无法弄清楚的是如何指定如何使某个模型同步/保存在第二个数据库中。特别是如果我没有明确说明的话。多个数据库帮助? (Django)
喜欢用户。
如果我使用django的用户类来创建用户,并且我如何将它保存到第二个数据库?
因此,我阅读了多个数据库文档https://docs.djangoproject.com/en/dev/topics/db/multi-db/,这是非常有帮助的。我得到了如何在setting.py中显示第二个数据库以及如何通过命令提示符同步它。但我无法弄清楚的是如何指定如何使某个模型同步/保存在第二个数据库中。特别是如果我没有明确说明的话。多个数据库帮助? (Django)
喜欢用户。
如果我使用django的用户类来创建用户,并且我如何将它保存到第二个数据库?
请仔细阅读您提供的文档。该文档的Automatic databse routing部分完全回答您的问题。
用户数据库的路由取决于您的实际使用情况和分区策略,没有一个句子答案。用户可以在文档中找到示例,您可以阅读并签入本地计算机。
(代码直接从Django文档: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的路径即可。
我想我只有一个问题。我在哪里放数据库路由类?在models.py中? – city 2012-04-18 16:15:42
@ user1316042它是通过'DATABASE_ROUTERS'中定义的路径导入的,路径只要可以找到就可以在任何地方。例如,你可以把它放在settings.py中,并将'DATABASE_ROUTERS'设置为'''settings.MyRouter']' – okm 2012-04-18 16:36:34
Hmmph。我遇到了问题,因为用户不能在我的模型中定义。因此我无法给它一个verbose_name,我正在使用它来路由模型。现在我将所有模型的verbose_name设置为'cash',但是为什么我会尝试使用路由器,因为我无法/没有定义用户,我必须使用'if model._meta.verbose_name!='现金':'当我得到allow_syncdb时,这让我陷入了一些问题。 – city 2012-04-18 18:04:56