Django项目(电子商务网站(,我们需要将其划分为子项目,作为买方,卖方和管理员,并将相应地创建三个数据库。那么,如果在一个项目中更新了相同的模型(模式(,我们如何在 3 个项目中管理相同的模型(模式(呢?
Django 支持同一项目的多个数据库功能。
这可以通过在settings.py中定义多个数据库属性来实现
DATABASES = {
'default': {},
'buyer': {
'NAME': 'buyer',
'ENGINE': 'django.db.backends.mysql',
'USER': '',
'PASSWORD': ''
},
'customers': {
'NAME': 'customers',
'ENGINE': 'django.db.backends.mysql',
'USER': '',
'PASSWORD': ''
}
}
需要定义路由器。https://docs.djangoproject.com/en/3.0/topics/db/multi-db/#using-routers
也可以使用关键字手动选择数据库 例如。
## fetch
Customer.objects.using('customers').all()
## save
customer_obj.save(using='customers')
当然,多个数据库存在一些限制,例如
跨数据库关系
Django 目前不提供任何对外键或多对多的支持。 跨多个数据库的关系。
贡献应用的行为
一些 contrib 应用程序包含模型,某些应用程序依赖于其他应用程序。由于跨数据库关系是不可能的,因此这会对如何跨数据库拆分这些模型产生一些限制: https://docs.djangoproject.com/en/3.0/topics/db/multi-db/#behavior-of-contrib-apps
有关更多详细信息,可以点击官方链接:
https://docs.djangoproject.com/en/3.0/topics/db/multi-db/