加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Django多租户

发布时间:2020-12-20 13:34:54 所属栏目:Python 来源:网络整理
导读:我有一个非常简单的项目,其中包含一个包含以下models.py的应用程序: class UserAccount: user = models.OneToOneField(User) additional = models.CharField(max_length=100)class Project: name = models.CharField(max_length=100) description = models.
我有一个非常简单的项目,其中包含一个包含以下models.py的应用程序:

class UserAccount:
    user = models.OneToOneField(User)
    additional = models.CharField(max_length=100)

class Project:
    name = models.CharField(max_length=100)
    description = models.CharField(max_length=200,blank=True,null=True)

class Record:
    user_account = models.ForeignKey(UserAccount)
    project = models.ForeignKey(Project)
    date = models.DateTimeField()

我希望不同的团队能够使用这个应用程序.但是,我希望以某种方式分离表(不希望所有帐户,项目和记录在同一个表中).

一种解决方案是为每个团队复制此应用程序,这很糟糕.
另一个是使用类似https://github.com/bcarneiro/django-tenant-schemas的东西,但我想避免多个子域.

我想管理网址的方式是:

> mysite.com/teamA/
> mysite.com/teamB/
> mysite.com/admin/teamA/
> mysite.com/admin/teamB/

我在网上看了很多关于Django多租户的文章,但没有找到符合我需求的解决方案:

> 1 DB但不是所有租户数据在同一个表中
>不使用网站或子域名,而是:mysite.com/tenant1/,mysite.com/tenant2/,

谢谢你的帮助!

解决方法

不应该太难.您必须编写自己的中间件并将其放在settings.py中.复制并粘贴此文件并将其修改为使用网址的不同部分,而不是此处的子网域:

https://github.com/bcarneiro/django-tenant-schemas/blob/master/tenant_schemas/middleware.py

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读