使用站点框架可以很好地为“租户”提供安全保障,假设您给每个站点实例一个唯一的表。另一方面,如果您只有少量租户,则会很麻烦,并且会浪费大量服务器资源,因为即使他们不使用系统,您也需要至少一个服务器进程来服务每个客户。如果您有大量租户,则无论采用何种方法,都将被迫自动化解决方案,这样减轻了很多麻烦。在几乎所有模型中放置租户外键将运作良好,Django的ORM使用自定义管理器更容易强制执行安全性。缺点是,如果用户数量增加,性能会下降,因为没有简单的方法来扩展。如果需要扩展,我认为最好的解决方案可能是两种方法的结合。每个模型都有一个租户外键,因此数据库可以共享,但是您需要在比Django更高级别的机制中开发一些机制来将客户路由到网站实例中。这样,您就可以将真正大的租户放在自己的数据库中,并为他们适当调整资源(例如,适当数量的mod_wsgi守护程序,数据库连接数,大小合适的memcache池等),而较小的租户共享公共资源。