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

标签 django git project scaling divide

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

最佳答案

Django 支持同一项目的多个数据库功能。
这可以通过在 中定义多个数据库属性来实现。设置.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 应用程序的行为
    几个 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/

    关于django - 如何将大型 Django 项目划分为子项目进行扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50624140/

    相关文章:

    python - 具有 Mysql 坐标/多边形精度的 Geodjango

    python - 变更表单中的ModelChoiceField初始值

    django {% url %} 标签不带参数

    git reset -- 很难与以前的提交设置本地和远程存储库

    console - 无法在谷歌云控制台上创建新项目 - "You must select a parent organization or folder"

    audio - 如何访问扬声器播放的波形?

    python - Django - 模型结构

    Git - merge 分支开发 : HEAD - N into master

    svn - 仅从 git 转换 subversion 存储库的一部分

    java - 将 .class 文件添加到 NetBeans 中的项目