假设我们有一个名为Event
的模型,其中有一个slu name
。我正在寻找配置我的Django应用程序,以基本上将我的所有其他模型隔离到单独的应用程序,具体取决于事件。例如:
"http://annualmeetup.domain.com" # in the form of "http://{}.domain.com".format(e.name)
如何创建已完成的隔离应用,以便我的用户,会议和其他模型仅在给定子域的上下文中工作?我正在考虑为每个事件编写多个应用程序,并通过命令脚本复制相同的模型,但我仍然不知道如何将应用程序指向子域。
答案 0 :(得分:5)
一种选择是使用专为此目的而设计的django-tenant-schemas:
Django目前没有简单的方法来支持使用相同项目实例的多个租户,即使只有数据不同。因为我们不希望您运行项目的许多副本,所以您可以拥有:
- 在同一个实例上运行的多个客户
- 共享和租户特定数据
- 租户视图路由(即子域映射)
这将导致您为每个租户(事件,在您的情况下)拥有单独的数据库架构,每个都有自己的隔离模型。没有太多努力,您可以动态创建租户(事件) - 听起来您的用例需要这样做。
注意:MyListArray:({Return=something;},{Departure=something;},{Both=something;});
仅适用于Postgres。
答案 1 :(得分:0)
您不必为每个活动编写单独的应用程序。如果每个事件共享相同的架构,您可以创建架构Multitenant
以下是可用于此的所有软件包。 Link here
我个人推荐django-hosts
但它没有提供良好的数据隔离功能。如果您已经有一个现有项目并且只想引入多租户,那么这很好。但是,如果您刚刚开始该项目,django-tenancy
是一个很好的选择。