【问题标题】:Django staff users manage their own users that they have created onlyDjango 员工用户管理他们自己创建的用户
【发布时间】:2019-06-30 00:45:15
【问题描述】:

在我的 Django 应用程序中,用户可以注册到站点并从管理员那里获得 staff_user 权限。之后,员工用户可以使用默认的 django 管理站点创建和管理一些其他用户(普通用户)。现在,我想让员工用户只看到和管理他从管理站点创建的用户,我不希望他看到其他员工用户创建的其他用户。

我该怎么做?我想我需要修改 admin.py 对吧?

我使用的是 django 版本 1.11

【问题讨论】:

    标签: python django django-admin


    【解决方案1】:

    是的,您需要覆盖 admin.py 中的一些方法。需要应用以下内容。

    1. 更新用户模型以添加 created_by 字段
    2. 覆盖管理员中的保存方法以设置 created_by 字段
    3. 重写 get queryset 方法以根据 created_by 过滤用户列表。

      class ProfileAdmin(admin.ModelAdmin):
          list_display = ("username",)
          model = Profile
      
      
          def get_queryset(self, request):
              qs = super().get_queryset(request)
              if request.user.is_superuser:
                  return qs
      
              return Profile.objects.filter(created_by=request.user) or qs.none()
      
      
      
          def save_model(self, request, obj, form, change):
              if change:
                  obj.modified_by = request.user
              else:
                  obj.created_by = request.user
      
              obj.save()
      

    【讨论】:

    • 你能正确缩进代码吗?看不懂
    猜你喜欢
    • 2013-04-02
    • 2020-02-26
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 2019-05-17
    • 2012-08-07
    • 1970-01-01
    相关资源
    最近更新 更多