Django Admin 添加readonly用户

Django默认没有只读权限,只能自己实现。查看了大量的资料,总算搞定了。

  1. 修改admin.py

    from django.contrib.admin.util import flatten_fieldsets #引入类

    class GconfAdmin(admin.ModelAdmin):

    list_display=(‘mailserver‘,‘mailsender‘,‘mail_on_off‘,‘sms_on_off‘)

    #搜索字段

    search_fields=(‘mailserver‘,‘mailsender‘,‘mail_on_off‘,‘sms_on_off‘)

    def get_readonly_fields(self,request,obj=None):

            if not request.user.is_superuser and request.user.username==‘readonly‘:

                return [f.name for f in self.model._meta.fields]

            return self.readonly_fields

    在Admin类中新增红色部分

  2. root用户登录django界面,新建readonly用户,并赋予change权限即可(用户必须有change权限)

此方法有个缺点就是每个mymodelAdmin类都需要添加get_readonly_fields函数

优化方法:

在在项目app下创建custom_model_admin.py

from django.contrib import admin

from django.contrib.admin.util import flatten_fieldsets

class CustomModelAdmin(admin.ModelAdmin):

def get_readonly_fields(self,request,obj=None):

if not request.user.is_superuser and request.user.username==‘readonly‘:

return [f.name for f in self.model._meta.fields]

return self.readonly_fields

在admin.py 中引用这个类

from myapp.custom_model_admin import CustomModelAdmin

将admin.ModelAdmin替换成CustomModelAdmin 即可

时间: 2024-10-06 00:07:31

Django Admin 添加readonly用户的相关文章

django admin 添加用户出现外键约束错误

今天在做mxonline项目时,注册了用户表进admin后,想在后台添加一个用户试试,结果出现了错误,经过一番搜索发现以下两个解决方法,不过我只用了一种 报错信息: IntegrityError: (1452, u'Cannot add or update a child row: a foreign key constraint fails (`mxonline`.`django_admin_log`, CONSTRAINT `django_admin_log_user_id_c564eba6

Django Admin后台添加用户时出现报错:1452

如果在使用Django Admin后台添加用户时出现报错: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`mxproject`.`django_admin_log`, CONSTRAINT `django_admin_log_user_id_c564eba6_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id

django中添加用户

在django中添加用户,直接在auth_user表中添加会有问题,因为这里密码是加密的,可以通过manage.py shell加入 创建User: 1 >>> from django.contrib.auth.models import User 2 >>> user = User.objects.create_user('esperyong', '[email protected]', '123456') 3 # 现在一个is_active属性为True的User对

Django Admin Cookbook-39如何两次向Django管理员添加模型

39.如何向Django Admin后台中添加两个同样的模型? 你需要将添加两个Hero模型Admin后台中,一个作为常规管理使用,一个作为只读使用(某些用户可能只会看到只读页面). 如果你尝试两次注册相同的模型: admin.site.register(Hero) admin.site.register(Hero) 将显示如下报错: raise AlreadyRegistered('The model %s is already registered' % model.__name__) 解决

为MS SQL 2005添加一个用户admin

在Microsoft SQL Server 2005中,为数据库InterLib添加一个管理员(owner)用户admin.效果如下: 操作如下: 1)先以"Windows 身份验证"进入数据库引擎SQL 2005: 2)点开数据库结点-->安全性/登陆名-->右击"登陆名"-->新建登陆名-->SQL Server身份认证-->登陆名:admin,密码:333555,取消"强制实施密码策略",默认数据库选择&quo

Django Admin Cookbook-17如何仅限特定用户登录Django Admin管理后台

17.如何仅限特定用户登录Django Admin管理后台? 只有勾选了is_staff=True的用户才允许登录Django Admin管理后台.要禁止用户访问Admin后台,可以应该设置该用户is_staff=False. 同样,超级管理员可以通过is_superuser=True设置.如果is_staff=False的用户尝试登录管理后台,将看到如下消息. 返回目录 原文地址:https://www.cnblogs.com/superhin/p/12174549.html

Django Admin Cookbook-23如何在Django admin中添加嵌套的内联

23.如何在Django admin中添加嵌套的内联? 假设我们定义了以下模型: class Category(models.Model): ... class Hero(models.Model): category = models.ForeignKey(Catgeory) ... class HeroAcquaintance(models.Model): hero = models.OneToOneField(Hero, on_delete=models.CASCADE) ... 你想拥有

Django admin 的 9 个技巧

Tip 1:Django admin 后台不限于用 Django 开发的网站 虽然 Django admin 管理界面可以非常友好的用在 Django 项目的其它部分,它同样可以很容易用于其它像传统的数据库或具有一个可怕的的管理界面的网站.而且这也是评估 Django 是否会满足您的需求的最佳途径. 你需要做的仅是: 在你的 Django 项目中建立一个新的应用,并确保你已经连接好传统数据库 ,通过 settings.py 文件中的 DATABASES 的设置. 将你的数据表定义为 Django

Django admin site(一)ModelAdmin Options

Admin管理界面是django的杀手级应用.它读取你模式中的元数据,然后提供给你一个强大而且可以使用的界面,网站管理者可以用它立即向网站中添加内容. 要使用admin,可以按照下面的步骤: 将'django.contrib.admin'加入setting的INSTALLED_APPS配置中. 保证INSTALLED_APPS中包含'django.contrib.auth','django.contrib.contenttypes','django.contrib.messages'和'djan