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

2024-02-01

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

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

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

  • 只需按帐户过滤每个查询
  • 用装饰器包装每个视图,但是对于多个模型,我是否必须为每个模型创建不同的装饰器?我可以从装饰器内部判断正在访问哪个模型吗?
  • 以某种方式利用 Auth 系统的user_passes_test装饰器,但同样,不同的模型。
  • 扩展身份验证系统以包括request.account属性
  • 为我的视图创建一个新的 mixin?如果我不只使用 CBV 怎么办?
  • 不同的中间件?

我考虑为每个帐户使用一个新组,然后按组而不是新帐户模型进行过滤,但我预测这在这种情况下不太适合,因为它没有按预期使用组。

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


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

http://spapas.github.io/2013/11/05/django-authoritiy-data/ http://spapas.github.io/2013/11/05/django-authoritiy-data/

回顾一下这篇文章,我建议只添加一个Authority您的型号User将有一个ForeignKey (each User将有一个Profile).

现在,所有数据属于特定的模型Authorities将只包含一个ForeignKey to Authority。要检查权限,您可以使用 CBV - django 管理员仅可供有权访问所有数据的中央管理员使用。我建议不要使用 django 权限进行授权Authority数据。如果您想阅读更详细的帖子,并在此处提出任何问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django:多个帐户,每个帐户下有多个用户,但特定于帐户的数据 的相关文章

随机推荐

  • 实体子类的专用缓存区域?

    我们拥有一个包含 100 多个实体类的广泛实体模型 所有实体类都是单个实体超类的子类 共享缓存模式已设置为ALL Entity Inheritance strategy InheritanceType JOINED Table name e
  • 这是什么意思: qq = qq || {}? [复制]

    这个问题在这里已经有答案了 我已经下载了一个 JavaScript 脚本 第一行是 qq qq 这是什么意思 它检查qq对于预先存在的真实值 http 11heavens com falsy and truthy in javascript
  • 安装私有 Go 模块:未知修订错误

    我有一个私人 Go 存储库 位于https github com myorg myrepo被另一个 Go 存储库使用并定义在go mod 当我尝试跑步时 go mod tidy下载所有依赖项 它返回以下错误 go github com my
  • 处理400后运行时错误

    设想 用户名和密码使用 WebApi 2 令牌身份验证进行身份验证 如果凭据正确 则返回令牌 但是 如果凭据不正确 则会返回 400 bad request 在我的 Ionic 2 项目中 如果收到响应 我会导航到下一页 如果收到错误 我会
  • Java中使用Selenium快速获取每个WebElement的类属性

    我正在寻找每个的类属性WebElement用硒快速在页面上 目前 我正在执行以下操作 allElements new ArrayList
  • 当 setLabelsClipped 为 true 时,顶点标签在顶点外部、滚动条上和其他组件上绘制

    我使用 JGraph 一段时间了 当您将标签裁剪设置为 true 时 似乎存在绘画问题 下面的简化示例显示了您可能会遇到的实际应用程序中的问题 import java awt BorderLayout import java awt Dim
  • 在 MATLAB 中处理大型 CSV 文件

    我必须处理一个最大 2GB 的大 CSV 文件 更具体地说 我必须将所有这些数据上传到 mySQL 数据库 但在我必须对此进行一些计算之前 所以我需要在 MATLAB 中完成所有这些操作 我的主管也想在 MATLAB 中完成 因为他熟悉MA
  • 将嵌套 XML 数据与数据库表结构进行匹配的最快方法

    我有一个创建的应用程序datarequests这可能相当复杂 这些需要作为表存储在数据库中 一个轮廓datarequest 作为 XML 将是
  • 无法解析 MatDialogRef 角度 4 的所有参数

    我正在研究 Angular 4 我正在尝试设置材质包 在这里我尝试尝试对话框 但它不起作用 可能是因为我不确定材质包 这是我的 dialog components ts import Component OnInit from angula
  • NET::ERR_CERT_COMMON_NAME_INVALID - 错误消息

    前段时间我用 Flask 建立了一个网站 现在突然间 当我尝试导航到那里时 我得到以下信息 NET ERR CERT COMMON NAME INVALID 你的连接不是私人的 攻击者可能试图从 www mysite org 窃取您的信息
  • __cdecl 调用约定不适用于 msvc x64

    只是一个测试 cdecl调用约定 这是一个 cmake 项目 只有 1 个源文件 include
  • 极其奇怪的 IE7/8 边框/不透明度兼容性问题

    奇怪的问题是 当在 IE 8 9 中应用不透明度时 边框会消失 但在 7 中不会 我基本上在屏幕顶部有一个带有选项卡的菜单 IE table tr td class tab button 1 lt td gt td class tab bu
  • 如何将 EF 类型名称传递到方法参数中?

    我正在使用 MVC3 EF4 1 和 C 我正在尝试使用通用方法来更新存在于众多实体类型中的属性 因此 我需要将类型作为参数传递到方法中 请问我该怎么做 一些代码 public Boolean CompleteTask PRV myCurr
  • jQuery AJAX 调用中是否有类似于“finally”的情况?

    jQuery AJAX 调用中是否有 Java 最终 类似物 我这里有这个代码 在我的always我抛出一个异常 但我总是希望它去then method call xmlHttpReq ajax url url dataType json
  • 如何在 Sublime Text 4(Windows)中显示菜单栏

    我更新了我的 sublime 文本 之后我似乎看不到屏幕顶部的菜单栏 但现在必须单击 3 行按钮才能查看它 有什么方法可以让菜单栏再次像平常一样显示吗 我尝试 查看 并启用它 但找不到任何 菜单栏设置 我认为显示汉堡菜单是您当前主题的一个特
  • PyCharm 调试器因 AttributeError 失败

    我无法在 PyCharm 中调试 Flask 应用程序 该应用程序应在端口 5000 上运行 app run host 10 1 0 17 port 5000 debug True 控制台输出为 C Python python exe C
  • 创建线程时有多少开销?

    我刚刚回顾了一些非常糟糕的代码 通过创建一个新线程来在串行端口上发送消息的代码 以便为发送的每条消息在新线程中打包和组装消息 是的 对于每条消息 都会创建一个 pthread 正确设置位 然后线程终止 我不知道为什么有人会做这样的事情 但它
  • Kotlin 协程选择调度程序

    我正在尝试找出在什么情况下使用哪个调度程序 我阅读了一些文档并提出了这个 默认 CPU工作 主要 主要 更新UI 无拘无束 IO 写文件 网络任务 这是正确的吗 那么无拘无束呢 您对调度程序类型的假设是正确的 无限制调度员 不局限于任何特定
  • 将视图模型绑定到淘汰赛中属性的存在

    我正在使用 Knockout js 填充一组 HTML5
  • Django:多个帐户,每个帐户下有多个用户,但特定于帐户的数据

    这里使用 Django 1 5 我创建了一个应用程序 当前拥有一大组数据 如果您愿意的话 可以用于一个 帐户 这意味着我的应用程序中所有模型中的所有数据都可供所有登录用户使用 现在 我希望能够让更多的人使用我的应用程序 但使用他们自己的数据