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()

さまざまなチームがこのアプリを使用できるようにしたいと考えています。ただし、テーブルを何らかの方法で分離したい (すべてのアカウント、プロジェクト、およびレコードを同じテーブルに配置したくない)。

1 つの解決策は、このアプリをチームごとに複製することですが、これは良くありません。もう 1 つはhttps://github.com/bcarneiro/django-tenant-schemasのようなものを使用することですが、複数のサブドメインは避けたいと考えています。

URLを管理したい方法は次のとおりです。

  • mysite.com/teamA/
  • mysite.com/teamB/
  • mysite.com/admin/teamA/
  • mysite.com/admin/teamB/

Django のマルチテナンシーに関する Web 上の多くの記事を読みましたが、私のニーズに合った解決策が 1 つも見つかりませんでした。

  • 1 DB (同じテーブル内のすべてのテナント データではない)
  • サイトまたはサブドメインは使用せず、代わりに 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 に答える