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

时间:2018-05-31 12:18:17

标签: django git project scaling divide

Django项目(电子商务网站)我们需要将其划分为子项目作为买方,卖方和管理员,并相应地创建三个数据库。那么,如果在一个项目中更新,我们如何在3个项目中管理相同的模型(模式)?

1 个答案:

答案 0 :(得分:1)

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/