假设我们有一个名为Event的模型,其中有一个slugname。我希望配置我的Django应用程序,以便根据事件将所有其他模型基本隔离到不同的应用程序中。例如:

"http://annualmeetup.domain.com" # in the form of "http://{}.domain.com".format(e.name)

如何创建完整的独立应用程序,以便我的用户、会议和其他模型仅在给定子域的上下文中工作?我正在考虑为每个事件编写多个应用程序,并通过命令脚本复制相同的模型,但我仍然不知道如何将应用程序指向子域。

最佳答案

一种选择是使用django-tenant-schemas这是为此目的而设计的:
Django目前没有简单的方法来支持使用同一个项目实例的多个租户,即使只有数据不同。因为我们不希望您运行项目的多个副本,所以您将能够:
在同一实例上运行的多个客户
共享和特定于租户的数据
租户视图路由(即子域映射)
这将导致为每个租户(在您的情况下,是事件)提供单独的数据库模式,每个租户都有自己的独立模型。不需要太多的努力,您就可以动态创建租户(事件)-听起来您的用例需要这样做。
注意:tenant-schemas仅适用于Postgres。

07-24 19:23
查看更多