【问题标题】:Django Admin: Show different models to different usersDjango Admin:向不同的用户显示不同的模型
【发布时间】:2018-12-14 16:45:09
【问题描述】:

我有两个超级用户(user1user2)和两个模型(ModelAModelB)。在管理页面中,我只想显示ModelAuser1,所以user1 只能编辑ModelA 实例,但不能编辑ModelB 实例。同样,我希望 user2 只能编辑 ModelB 实例。有没有办法做到这一点?

【问题讨论】:

  • 超级用户可以编辑所有内容,但您可以将staff 访问权限授予这些用户并仅分配相关角色。
  • @Selcuk 你能解释一下如何分配相关角色吗?一些代码会有很大帮助。谢谢!

标签: python django django-admin django-permissions


【解决方案1】:

如果您需要限制ModelAModelB 的访问权限,user1user2 不能成为超级用户。所以,请先重构它。

是的,您可以在 Django 管理界面中授予特定用户对特定模型的访问权限。请查看 Django 文档:Permissions and Authorizations

还有一个很好的关于设置权限和组的教程:https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django/Authentication

如果您在阅读资源后有任何困惑,请告诉我。

谢谢!

【讨论】:

    【解决方案2】:

    这就是@987654321@ 的用途。您可以向特定用户授予编辑权限。

    class TestAdmin(admin.ModelAdmin):
    
        def has_change_permission(self, request):
            if request.user.username == 'xyz':
                # Feel free to return false to hide this TestAdmin to xyz user
                return False
            return True
    

    【讨论】:

      【解决方案3】:

      在 has_module_permission 中,您可以执行以下操作:

      def has_module_permission(self, request):
          if request.user.is_superuser:  # show for super user anyway
              return True
          if request.user ... complete the condition:
              return True
      

      你应该有一些东西来区分用户,比如为不同的用户(管理员、员工、编辑)设置更多属性等等。

      if request.user.role = "staff":
          return True
      

      类似的东西。

      【讨论】:

        猜你喜欢
        • 2016-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-25
        • 2012-12-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多