gpt4 book ai didi

django - Django 组和权限应该硬编码还是引导?

转载 作者:行者123 更新时间:2023-12-04 12:59:13 25 4
gpt4 key购买 nike

我正在构建一个应用程序,它假定存在某些组和其工作流的权限。例如,“成员(member)”可以登录应用程序并查看和编辑他们的个人数据,但无法看到通常会显示在同一屏幕上的笔记。 “员工”可以看到这些笔记并创建或编辑他们自己的笔记,但只有“成员经理”可以删除或编辑任何人的笔记。

我的问题是引导这个应用程序的数据。我可以为组创建 JSON 固定数据,但随后我必须对 PK 进行硬编码,这似乎是不好的做法(如果我想使用的第三方应用程序做了同样的事情并且存在冲突怎么办?)更大的问题是权限 - 我必须将 PK 添加到权限中,而这些权限又会为其内容类型添加 PK。

我已经阅读了有关使用 post_syncdb Hook 以更具编程性的方式添加初始数据的信息,我希望这能帮助我解决硬编码的 PK 问题。但我想知道这是否是这个问题的最佳解决方案,或者我是否在这里“滥用”了 Django Group 和 Permission 概念,并且应该做其他事情,比如创建新模型或只是放置标志(比如“is_member_manager") 在我的用户配置文件模型等上。

最佳答案

通常创建一个名为 init 的应用程序带有管理命令 initialize ,我把所有的代码放在那里来引导应用程序。这允许您:

  • 如果您使用部署工具(我使用 [Ansible]( http://www.ansible.com/home ,bat 可以是 amy 工具 Fabric、bash...),您可以自动化该过程并在配置后从已安装的应用程序中删除 init 应用程序(首先安装)

  • 或者
  • 检查命令是否已经启动以跳过进程( Group.objects.all().exists() ? )

  • (或两者)

    我发现这个解决方案非常易于维护,并且在任何情况下都足够强大。
    post_syncdb ( post_migrate in djang 1.7)不是每次迁移都需要的解决方案

    如果您只需要加载数据和/或创建记录(即组/管理员...),恕我直言,最好的解决方案是使用
    数据迁移]( https://docs.djangoproject.com/en/1.7/topics/migrations/#data-migrations )

    关于django - Django 组和权限应该硬编码还是引导?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13035813/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com