Django多租户

时间:2013-06-04 12:15:39

标签: django multi-tenant

我有一个非常简单的项目,其中包含一个包含以下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/,

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

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

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