Django:如何在不使用默认管理员

时间:2015-07-02 14:41:07

标签: python django django-models django-permissions

我正在根据需要管理Django项目,以管理自定义模板中的用户,组和权限。所以我没有使用默认的管理仪表板。

我已经完成了用户创建模块,现在我想为用户分配权限和组。

我还没有覆盖或自定义任何auth Model。但是将来我需要自定义User Model,例如一些其他字段等。

我首先想要删除auth_permission表中的所有权限并添加我的自定义权限。

所以我必须做以下事情:

  1. 创建论坛
  2. 权限列表
  3. 为每个组分配权限
  4. 为每个用户分配组或权限
  5. 我对这些事情有些担忧。

    • 如果我删除了所有权限,项目是否可以?

    • 像has_perm这样的验证权限的Django函数会起作用吗?

    • 我可以为它做些不同的事吗?

    需要一些健康的提示。

    更新: 我想只向管理员显示我的自定义权限,如perm1,perm2。目前还有其他许多权限。

    谢谢

1 个答案:

答案 0 :(得分:1)

“如果我删除了所有权限,项目是否正常?”

如果您试图摆脱现有权限,django可能只是重新创建它们,或者您在创建新模型时可能会遇到麻烦。我不确定创建/重新创建get的详细信息,但django对于您创建的每个模型都有default permissions

“像has_perm这样的验证权限的Django函数会起作用吗?”

只要您通过Programmatically creating permissions或将Custom Permissions放入模型的Meta类中创建权限,您就应该像使用其他任何权限一样使用它们。具体来说,我的意思是您应该能够使用user.has_permpermission_required装饰器。

“我可以为它做些不同的事情吗?”

如果您只想显示user.user_permissions之类的某些权限,我建议过滤您获得的结果,而不是试图摆脱现有权限。类似下面的内容是合适的:

filter_show_permissions = ["perm_a", "perm_b", ...]
filtered_permissions = [perm for perm in user.user_permissions
                        if perm in filter_show_permissions]