首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何限制Django admin中的非超级用户选择所有用户组/权限?

在Django admin中,限制非超级用户选择所有用户组/权限可以通过自定义用户管理模型来实现。以下是一种实现方式:

  1. 创建一个新的用户管理模型,例如CustomUserAdmin,并从django.contrib.auth.admin import UserAdmin继承。
  2. CustomUserAdmin中重写formfield_for_manytomany方法,该方法用于自定义多对多字段的显示和选择行为。
代码语言:txt
复制
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import Group, Permission

from .models import CustomUser

class CustomUserAdmin(UserAdmin):
    def formfield_for_manytomany(self, db_field, request, **kwargs):
        if db_field.name == "groups" or db_field.name == "user_permissions":
            # 限制非超级用户只能选择自己所属的用户组和权限
            if not request.user.is_superuser:
                kwargs["queryset"] = db_field.related_model.objects.filter(
                    id__in=request.user.groups.values_list("id", flat=True)
                )
        return super().formfield_for_manytomany(db_field, request, **kwargs)

admin.site.unregister(Group)
admin.site.unregister(Permission)
admin.site.register(CustomUser, CustomUserAdmin)

在上述代码中,我们重写了formfield_for_manytomany方法,并在非超级用户访问时,将用户组和权限的选择范围限制为当前用户所属的用户组。

  1. admin.py中注册CustomUser模型,并取消注册默认的GroupPermission模型。
代码语言:txt
复制
from django.contrib import admin
from .models import CustomUser

admin.site.register(CustomUser, CustomUserAdmin)

通过以上步骤,非超级用户在Django admin中只能选择自己所属的用户组和权限,从而限制了其选择所有用户组/权限的能力。

关于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,建议您参考腾讯云官方文档或咨询腾讯云的客服人员获取相关信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

35.Django2.0文档

点击那个图标将会弹出一个窗口,在那里你可以选择想要添加的publisher。  第七章 用户、用户组和权限 因为你是用超级用户登录的,你可以创建,编辑和删除任何对像。...然而,不同的环境要求有不同的权限,系统不允许所有人都是超级用户。 管理工具有一个用户权限系统,通过它你可以根据用户的需要来指定他们的权限,从而达到部分访问系统的目的。...超级用户标志:它赋予用户在管理界面中添加、修改和删除任何项目的权限。 如果一个用户帐号有这个标          志,那么所有权限设置(即使没有)都会被忽略。...普通的活跃,非超级用户的管理用户可以根据一套设定好的许可进入。 管理界面中每种可编辑的对象(如:books、authors、publishers)都有三种权限:创建许可,编辑许可和删除许可。...如果你给某人编辑用户的权限,他可以编辑自己的权限,这种能力可能不是你希望的。 赋予一个用户修改用户的权限,本质上说就是把他变成一个超级用户。你也可以给组中分配用户。

11.3K100

Django官方文档小结(四) -- 用户及权限

在settings.py中配置 AbstractUser AUTH_USER_MODEL = 'app名.UserProfile' 普通用户创建 创建用户最直接的方法是使用包含的 create_user...(permission, permission, …) 用户对象删除权限 user_obj.user_permissions.clear() 用户对象清除所有权限 #3.1 权限表结构 from django.contrib.auth.models...(group, group, …) 用户对象删权限组 user_obj.groups.clear() 用户对象清除所有权限组 #4.1 权限组表结构 from django.contrib.auth.models...# 因为之前已经把用户权限全部清空,用户被加到权限组后, # 会拥有权限组的权限,但是并不是自己的权限,在数据库中没有记录,数据库只会记录用户在哪个权限组 如何查看用户是否拥有权限??...() 用户组中所有用户退出组 g_player.user_set.clear() #5 自定义权限 未完待续 !

43930
  • 关于“Python”Django 管理网站的核心知识点整理大全52

    在本节中,我们将建立管理网站,并通过它 使用模型Topic来添加一些主题。 1. 创建超级用户 Django允许你创建具备所有权限的用户——超级用户。权限决定了用户可执行的操作。...最严 格的权限设置只允许用户阅读网站的公开信息;注册了的用户通常可阅读自己的私有数据,还可 查看一些只有会员才能查看的信息。为有效地管理Web应用程序,网站所有者通常需要访问网站 存储的所有信息。...(ll_env)learning_log$ 你执行命令createsuperuser时,Django提示你输入超级用户的用户名(见1)。...现在,使用超级用户账户访问管理网站:访问http://localhost:8000/admin/,并输入你刚创建 的超级用户的用户名和密码,你将看到类似于图18-2所示的屏幕。...这个网页让你能够添加和修改 用户和用户组,还可以管理与刚才定义的模型Topic相关的数据。

    17010

    11.如何为CDSW集成RedHat7的OpenLDAP认证

    本篇文章Fayson主要介绍如何为CDSW集成RedHat7的OpenLDAP并指定的用户组分配访问权限。...CDH5.14中安装CDSW1.3》和《如何在CDH5.15中安装CDSW1.4》,这里就不再重复讲Navigator的安装了。...LDAP User Groups 允许访问CDSW服务的组,空为所有用户都可以访问 LDAP Full Administrator Groups cdsw_admin 为指定的用户组赋予超级管理员权限...使用cdsw_a用户登录访问,该用户所属组为cdsw_admin组,该组拥有超级管理员权限 ? 到此为止完成CDSW服务的集成及测试。...在CDSW中如果需要限制用户组访问或为用户组赋予超级管理员权限,均是通过登录成功用户的DN(uid=cdsw_a,ou=People,dc=fayson,dc=com)查找到用户所属组与设置的访问列表及权限列表组进行对比

    1K30

    如何使用Sentry为包含特殊字符的用户组授权

    Sentry在服务器、数据库、表和视图范围提供了不同特权级别的访问控制,包括查找、插入等——允许Admin用户通过视图的方式限制普通用户对行或列的访问,或者对数据进行脱敏处理。...例如,对于某特定数据集,你可以分配给反欺诈小组查看所有列的特权,给分析师查看非敏感或非PII(personally identifiable information)列的权限,给数据接收流插入新数据到HDFS...4、执行“grant all on server server1 to role admin;”语句,为admin角色赋予超级权限 ?...5 总结 1、Sentry对用户组授权,要求用户组名由字母数字或者下划线“_”组成。如果用户组名必须要包含非下划线的非字母数字字符,则必须将用户组名放在反引号(`)中以执行该命令。...2、启用Sentry后,必须给用户组授权相应权限才能执行对应操作,比如我只给“luo-kang”用户组授予了default库的SELECT权限,那么“luo-kang”用户可以查看default库内所有表的内容

    2.1K20

    Django-guardian实现对象级别的权限控制

    特征 Django的对象全新啊 匿名用户的支持 高级API 经过严密测试 Django admin的整合 装饰器 安装 要求Django1.7或更高版本 pip install django-guardian...guardian的匿名用户与Django的匿名用户不同。Django匿名用户在数据库中没有条目,但是Guardian匿名用户有。...例如,当使用django-polymorphic适用于所有子模型的基本模型上的权限时,这是有用的。...也可以使用get_user_perms获得直接分配权限给用户(而不是从它的超级用户权限或组成员资格继承的权限)。同样的,get_group_perms仅返回其是通过用户组的权限。...它为Django应用程序提供基本的内容管理。具有访问管理面板的用户可以管理系统提供的用户,组,权限和其他数据。 django-guardian 为Django的admin提供简单的对象许可管理集成。

    3.4K30

    如何在CDH中使用HBase的ACLs进行授权

    ,范围定义如下: Superuser : 超级用户可以执行HBase中所有操作及任何资源(如:hbase用户) Global: 在全局范围内授予的权限,可以在超级管理下创建多种集群管理员 Namespace...使用hbase超级管理员,为admin用户组全局范围授权,授权admin用户有创建表的权限 [root@cdh01 ~]# klist [root@cdh01 ~]# hbase shell hbase...查看用户权限 ? 测试总结: 拥有CA权限的admin用户,可以在HBase库中创建NameSpace和Table,并可以对自己新建的表进行读、写、删除等操作,但不能操作非admin用户创建的表。...在前面通过hbase的超级管理员为admin用户赋予了全局的CA权限,这里使用admin用户为fayson用户授权my_ns_admin空间的所有权限 hbase(main):018:0* whoami...4.当为用户或用户组拥有CA权限时,用户和用户组创建表时会默认的为当前操作用户添加该表的RWXCA权限 5.可以通过user_permission ‘.*’查看当前HBase所有的授权 6.通过revoke

    2.6K51

    接口测试平台代码实现14:注册功能和后台管理

    调用django的内部函数auth.logout函数 来实现退出功能。 给用户跳转到登陆页面。...现在我们直接进入网址:127.0.0.1:8000/admin/ 就进入了一个后台的登陆页面,是不是很神奇?居然藏着这样一个地方可以管理所有平台数据和用户!...好的 这里我们只能通过管理员账号密码 来登陆。但是我们貌似并不知道管理员账号是什么?我们之前自己注册的都只是普通用户,根本无权限登陆这个后台。那么我们要如何创建超级管理员呢?...上面是groups用户组,也就是说我们实际上可以给用户分组,然后不同的组赋予不同的权利。 下面Users是用户表。我们点进去看看: 可以看到我们创建的俩个账户都在这,一个超管,一个普通用户。...我们可以手动在这里 设置各个用户的信息,包括增删改查! 这个后台的用处 还有处理其他数据。不过我们目前没有其他数据,所以只展示了用户组和用户表。 后续我们会经常使用这个平台的。

    63240

    Python自动化开发学习-Django

    在往下还有 “用户权限” ,默认所有的账户都是一张表的权限都没有的,包括超级管理员。但是超级管理员的账户勾选了 “超级用户状态(指明该用户缺省拥有所有权限。)” 所以无视这个设置。...普通用户就需要在这里添加权限了。这里有包括django默认的表以及我们自己创建的表。权限比较粗,基本上就是控制这个用户可以操作那些表,我没找到只读权限。...如果是多对多的外键,需要用这个: filter_horizontal = () # 这里并没有多对多的字段,就空着吧 这个的效果可以参考用户权限分配里的用户组合用户权限的操作,多选的情况这么设置可以有更好的体验...这是django提供的方法,所以也支持用户组。 只要能拿到User对象和权限名,就是获取到一个True或False的结果。...限制请求的方法 限制请求使用的参数:必须包含某系参数,但是不关心值是多少,把参数记录在一个列表里 限制请求使用的参数和值:必须包含特定的参数,并且值也必须匹配,把键值对记录在一个字典里 不过也不是所有的权限都是可以用装饰器来实现的

    1.8K30

    Python 项目实践三(Web应用程序)第一篇

    admin.py和views.py将在稍后介绍。 2.1 定义模型 我们来想想涉及的数据。每位用户都需要在学习笔记中创建很多主题。用户输入的每个条目都与特定主题相关联,这些条目将以文本的方式显示。...模型告诉Django如何处理应用程序中存储的数据。在代码层面,模型就是一个类,就像前面讨论的每个类一样,包含属性和方法。...在本节中,我们将建立管理网站,并通过它使用模型Topic来添加一些主题。 2.3.1 创建超级用户 Django允许你创建具备所有权限的用户——超级用户。权限决定了用户可执行的操作。...为在Django中创建超级用户,请执行下面的命令并按提示做 2.3.2 向网站注册模型 Django自动在管理网站中添加了一些模型,如User和Group,但对于我们创建的模型,必须手工进行注册。...现在,使用超级用户账户访问管理网站:访问http://localhost:8000/admin/,并输入你刚创建的超级用户的用户名和密码,这个网页让你能够添加和修改用户和用户组,还可以管理与刚才定义的模型

    2.1K60

    django 1.8 官方文档翻译:13-1-2 使用Django认证系统

    它提供一种分配权限给特定的用户和用户组的方法。 它被Django的admin站点使用,但欢迎你在你自己的代码中使用。...可以像其它任何Django模型一样创建和删除用户。可以创建组,并分配权限给用户和组。admin中还会保存和显示对用户模型编辑的日志。...如果一个账号具有添加用户的权限但是没有权限修改他们,该账号将不能添加用户。为什么呢?因为如果你具有添加用户的权限,你将可以添加超级用户,这些超级用户将可以修改其他用户。...所以Django同时要求添加权限和修改权限作为一种轻量的安全措施。 仔细考虑一下你是如何允许用户管理权限的。...如果你了一个非超级用户编辑用户的能力,这和给他们超级用户的权限在最终效果上是一样的,因为他们将能够提升他们自己下面的用户的权限。

    4.7K20

    Django实战-信息资讯-CMS权限管理

    可以通过admin将这些权限分配给不同用户。 ? auth_group 用户组 ? auth_group_permissions 用户组权限 ? auth_permission 用户权限 ?...,可以追踪项目中所有app和model的对应关系,并记录在ContentType表中。...② Group 用户组 from django.contrib.auth.models import Group 用户组(Group)和 User 模型是多对多的关系。...其作用在权限控制时可以批量对用户的权限进行管理和分配,而不用一个一个用户分配,节省工作量。将一个用户加入到一个Group中后,该用户就拥有了该Group所分配的所有权限。...User 对象中有一个名为 groups 的多对多字段, 多对多关系由 auth_user_groups数据表维护。Group 对象可以通过 user_set 反向查询用户组中的用户。

    1K10

    CDP-DC中Hue集成FreeIPA的LDAP认证

    同步LDAP用户组 重启成功后使用Hue的超级管理员登录,我们这里是admin用户为超级管理员,同时admin用户在freeipa中也存在,如果不存在,则需要根据第四章同步一个ldap的用户到hue系统中...用户登录测试 ? 这里看到使用原来的admin用户密码已无法正常登录,因为在freeIPA的LDAP中admin这个用户的密码不是数据库中的密码。...本页说明如何导入Hue用户和组并将其与LDAP服务器同步。请参阅使用LDAP对Hue用户进行身份验证以确保配置正确。 提示:导入和同步后,学习如何限制组权限。...LDAP组 导入并同步一组中的所有用户 sync_groups_at_login 登录时自动同步组成员身份 先决条件 注意: Hue不支持一次导入所有组。...要将Hue用户和组与LDAP服务器同步: • 必须将Hue配置为通过LDAP进行身份验证。请参阅使用LDAP验证Hue用户。 • 登录的用户必须具有Hue超级用户权限。

    1.6K20

    django开发个人简易Blog——数据模型

    从图中可以看出创建了9个数据表,并且提示是否为系统创建一个超级管理员,为了以后登录系统,我们输入yes。 之后按照提示输入用户名及密码即可。...打开浏览器,在浏览器中访问http://127.0.0.1:1989/admin ,出现如下登录界面: ? 输入刚刚创建的超级用户的用户名和密码,点击login按钮,即来到如下的管理界面: ?...通过这个管理界面,可以方便的对用户组和用户进行管理,并且有详细的日志记录。 到目前为止,一个可以验证用户权限并且可管理用户组和用户的后台管理系统就可以完美的运行了,简直太方便了。...数据模型设计: 由于这只是一个简单的博客,并且功能有限,所以,数据模型也是比较简单的,仅包括文章表、分类表及评论表这三个表,至于用户验证的部分,使用django自带的用户表。...到这里基本功能都是可用的,包括管理用户、用户组、管理文章、分类、评论都可以通过自带的后台管理界面来完成,当然了,能用并不代表好用,后面我会介绍怎么样开发自己的后台管理功能,以及如何展示。

    92280

    经过几个月学习python,运维管理平台实现与学习心得

    大体能实现,很多还需要细改,界面 软件架构:     前端:AdminLTE-2.4.2 ajax     后端:django 2 mysql 5.6 python 3.6 功能说明:     ...1.用户         添加用户需要选择用户组,也可以禁用改用户,禁用后无法登陆系统     2.用户组权限:         普通用户组:只能看,以及主机的功能操作,不能对系统的增删操作(如用户组删除...,用户删除修改,主机删除,主机修改等)         超级用户组:可以对所有操作     3.主机管理:         添加主机前需要添加机房,主机添加到对应用户组,对应用户组才能看到对应的服务器...(超级组可以看到所有)以及操作.     4.webssh采用的是webconsole,采集主机信息用的paramiko模块     5.日志,记录操作日志     6.其他功能(如上传下载,批量部署...学习是心酸的历史~ 还会延续

    15610

    Linux 基础

    密码有限制:最少是 6 位,并且建议是大写+小写+数字的组合 设置完成之后点击【下一步】 第二十七步:选择安装类型,这个时候选择【使用所有空间】,然后点击【下一步】 ? 然后选【将修改写入磁盘】 ?...第三十二步:设置新的用户(非超级管理员用户),填写好之后点击【前进】 ? 第三十三步:设置时间,然后点击【前进】 ?...这个目录中的命令文件是给普通用户使用(非超级管理员用户)。 /etc:Linux 下所有的配置文件都会存放到 etc 目录。 /home:是所有非 root 用户家目录的一个集合。...Root 用户(超级用户) 在 Linux 中,还有一个神一样存在的用户,这就是 root 用户,因为在所有用户中它拥有最大的权限 ,所以管理着普通用户。...Root 用户(超级用户) 在 Linux 中,还有一个神一样存在的用户,这就是 root 用户,因为在所有用户中它拥有最大的权限 ,所以管理着普通用户。

    3.8K34

    Linux用户与权限管理详解

    一、用户的管理 在 Linux 中,用户分为以下几种类型 超级用户(root):拥有系统的最高权限,可以执行所有操作 普通用户:权限受到限制,只能访问被授权的资源 系统用户:系统进程运行时所使用的用户...-U zhangsan 5、删除用户 删除用户并连同主目录一块删除 userdel -r zhangsan 默认情况下,专属用户组会被自动删除,非专属组不会删除 6、sudo命令 sudo允许普通用户以超级用户...=(ALL:ALL) /usr/bin/systemctl restart apache2 # 允许用户组 `admin` 执行所有命令 %admin ALL=(ALL:ALL) ALL sudo...、管理系统 长期以root用户身份工作 二、用户组的管理 在Linux系统中,用户组管理是用户管理的重要部分。...文件权限 文件权限由rwx组合表示,分为三组 所有者(User):文件的拥有者 所属组(Group):文件所属的用户组 其他用户(Other):系统中所有其他用户 权限表示 字符 权限 说明 r 读取

    19110

    用户查询操作权限命令

    用户 user:使用操作系统的人 用户组 user group:操作系统中具有相同系统权限的一组用户 Linux 用户管理查看的主要文件目录和用途 /etc/passwd 存储当前系统中所有用户的信息...描述:sudo(Switch User and Do) 以超级管理员身份执行,当前用户身份没有改变,使用自身密码获取授权,超级权限是临时的,root把本来只能超级用户执行的命令赋予普通用户执行,sudo...注意事项: 1.root上编辑 /etc/sudoers 写得越简单,普通用户的权限就越大. 2.Ubuntu系统提示用户不在 sudoers 文件中错误解决方法,以admin用户以及用户组为例. #...切换到root账号 su - # 解除sudoers的写入限制 chmod u+w /etc/sudoers # 为用户admin添加sudo权限 admin ALL=(ALL:ALL) ALL #...为用户组admin添加sudo权限 %admin ALL=(ALL) ALL # 将test用户添加到admin组并拥有一定sudo权限 usermod -G admin test # 切换用户

    3.3K10
    领券