Django多用户saas

时间:2012-01-05 09:40:49

标签: python django saas

我正在为学习目的创建一个小saas ...我知道最好的方法是为每个用户设置一个单独的模式...但我的saas是一个小应用程序,我真的不需要单独的模式加上它会使事情复杂化(后来对模式的更改)...所以我将为所有用户使用相同的模式,只需将每个用户的ID附加到条目,然后在登录时仅显示用户的条目。 / p>

有没有办法在通过中间件登录时“预先”用户的ID?或者我是否需要调整所有查询(按用户ID过滤)?我已经将用户的ID存储到他的条目中...所以我只需要选择这个。

谢谢!

1 个答案:

答案 0 :(得分:2)

我不知道基于request.user自动过滤查询集的任何方法。这是因为ORM没有与django.contrib.auth耦合。

我尝试了两种SaaS设计:

  1. 所有网站的数据库,并对所有查询集进行手动过滤。当然这使得django.contrib.admin无法开箱即用。也许可以使用django-authority或甚至other django per-object permission packagesgoogle cached version because djangopackages.com is down ATM)的设置非常紧密来启用django.contrib.admin。

  2. 每个网站1个数据库,这更容易,保持代码更清晰,并启用django.contrib.admin开箱即用,如果您安装{{{ 3}}。我还启用了django admin theme以及django.contrib.admindoc

  3. (显然在你的情况下,1个站点= 1个用户,但概念是相同的)

    我更喜欢第二种实现,因为它显然减少了很少的开发工作,可以通过一点点系统管理来补偿。