4

我有一个非常简单的项目,其中包含一个带有以下 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 个数据库,但不是所有租户数据都在同一个表中
  • 不使用站点或子域,而是使用:mysite.com/tenant1/、mysite.com/tenant2/、

谢谢你的帮助!

4

1 回答 1

1

应该不会太难。您必须编写自己的中间件并将其放入您的 settings.py 中。复制并粘贴此文件并修改它以使用与此处的子域不同的 url 部分:

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

于 2013-08-21T18:50:48.100 回答