如何将一个大型 Django 项目划分为子项目进行扩展?



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/

最新更新