Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:多个帐户,每个帐户下有多个用户,但是帐户特定的数据_Python_Django_Authentication - Fatal编程技术网

Python Django:多个帐户,每个帐户下有多个用户,但是帐户特定的数据

Python Django:多个帐户,每个帐户下有多个用户,但是帐户特定的数据,python,django,authentication,Python,Django,Authentication,在这里使用Django 1.5。我有一个我创建的应用程序,目前有一大组数据,如果你愿意的话,只需要一个“帐户”。这意味着我的应用程序中所有模型中的所有数据都可供所有登录用户使用。现在,我希望能够允许更多的人使用我的应用程序,但使用他们自己的数据集。所以我需要将用户分成不同的帐户,每个帐户有不同的数据集。可能有一个或多个用户可以访问每个帐户。此时,我不需要一个帐户中的不同用户具有不同的访问级别,尽管我确实希望一个用户成为帐户的“所有者” 我知道要进行这种转换,我当然需要在每个模型中添加一个字段,

在这里使用Django 1.5。我有一个我创建的应用程序,目前有一大组数据,如果你愿意的话,只需要一个“帐户”。这意味着我的应用程序中所有模型中的所有数据都可供所有登录用户使用。现在,我希望能够允许更多的人使用我的应用程序,但使用他们自己的数据集。所以我需要将用户分成不同的帐户,每个帐户有不同的数据集。可能有一个或多个用户可以访问每个帐户。此时,我不需要一个帐户中的不同用户具有不同的访问级别,尽管我确实希望一个用户成为帐户的“所有者”

我知道要进行这种转换,我当然需要在每个模型中添加一个字段,并在新的“帐户”模型中添加一个外键。但除此之外,我还有点迷茫。这似乎是Django的auth系统中的一个方钉。所以问题是,什么是最好的方法

到目前为止,我有一些想法:

  • 只需按帐户筛选每个查询
  • 使用装饰器包装每个视图,但是对于多个模型,我是否必须为每个模型创建不同的装饰器?我可以从decorator内部判断正在访问哪个模型吗
  • 以某种方式利用Auth系统的
    user\u passes\u test
    decorator,但又是不同的模型
  • 扩展身份验证系统以包括
    request.account
    属性
  • 为我的视图创建新的mixin?如果我不是专门使用CBV怎么办
  • 不同的中间件
我考虑为每个帐户使用一个新的组,然后按组过滤,而不是新的帐户模型,但我预测这在这种情况下是不合适的,因为它没有按预期使用组


这不是一个代码问题,而是一个全局性的最佳实践问题。您将如何处理这一问题?

您所要求的并不是那么奇怪:这称为权限数据-您将用户与权限分开,每个权限都有各自的数据。例如,组织中可能有多个部门-每个部门的数据只能由同一部门的成员编辑。我已经用django写了一篇博客文章,其中有一个简单的方法:

为了概括这篇文章,我建议只添加一个
权限
模型,您的
用户
将拥有一个
外键
(每个
用户
将拥有一个
档案


现在,所有数据将属于特定
权限的模型将只包含一个
外键
权限
。要检查您可以使用CBV的权限,django管理员将仅对有权访问所有数据的中央管理员可用。我建议不要使用django权限来授权
权限
数据。如果你想阅读更详细的文章,请在这里提问。

我不了解整个帐户/用户/数据分离目标。你能更详细地描述一下吗?