1.字段支持下拉搜索框

1)在admin中新增字段autocomplete_fields

autocomplete_fields = ("field1","field2")

注意:field1,field2字段需要的是外键字段

2)field1,field2字段需要在model中添加类属性search_fields

search_fields = ('name', )

注意:name为field1或field2对应表中要进行搜索的字段

2.字段支持自定义颜色选择器

1)安装python扩展

pip install django-colorfield

生成静态文件
python manage.py collectstatic

2) 配置文件settings.py , 添加配置项

在INSTALLED_APPS中添加
INSTALLED_APPS = [ ...
'colorfield',
...
]

3) 在model.py中添加字段支持

from django.db import models
from colorfield.fields import ColorField
class ComputerRoom(models.Model):
name = models.CharField(max_length=256,verbose_name = "名称")
abbr = models.CharField(max_length=128, blank=True, null=True,verbose_name = "缩写")
type = models.CharField(max_length=256,verbose_name='类型', choices=typeChoices)
color = ColorField(default='#FF0000',verbose_name='显示颜色')

然后在Django后台打开对应的模块就可以看到颜色选择器了。

3.自定义菜单

左侧可折叠菜单是Simple UI系统默认菜单,根据已注册的应用和模型自动生成,其中父级菜单是App名,子菜单一般是所属App的各个模型名。SimpleUI甚至会自动为你分配默认图标,比如本例的tasks的应用使用了font-awsome的fa fa-tasks。在大多数情况下,Simple UI系统默认菜单不能满足需求,这时你就需要自定义菜单了,比如添加新的选项或给菜单选项分配新的图标。

修改settings.py, 添加如下代码:

SIMPLEUI_CONFIG = {
# 是否使用系统默认菜单,自定义菜单时建议关闭。
'system_keep': False, # 用于菜单排序和过滤, 不填此字段为默认排序和全部显示。空列表[] 为全部不显示.
'menu_display': ['任务管理', '权限认证'], # 设置是否开启动态菜单, 默认为False. 如果开启, 则会在每次用户登陆时刷新展示菜单内容。
# 一般建议关闭。
'dynamic': False,
'menus': [
{
'app': 'auth',
'name': '权限认证',
'icon': 'fas fa-user-shield',
'models': [
{
'name': '用户列表',
'icon': 'fa fa-user',
'url': 'auth/user/'
},
{
'name': '用户组',
'icon': 'fa fa-th-list',
'url': 'auth/group/'
}
]
}, {
'name': '任务管理',
'icon': 'fa fa-th-list',
'models': [
{
'name': '任务列表',
# 注意url按'/admin/应用名/模型名小写/'命名。
'url': '/admin/tasks/task/',
'icon': 'fa fa-tasks'
},
]
},
]
}

自定义菜单效果如下所示。我们更改了SimpleUI默认分配的图标。你还可以随意增减菜单选项并对其进行排序:

查找相关图标:https://fontawesome.com/v5.15/icons?d=gallery&p=2

 


4.
一般测试环境会使用migrate来添加新的字段或者表, 但是线上一般不会使用命令直接操作,以防引起不可预知的问题, 这个时候就可以手动的将测试服的相关表变更同步到生产环境
尤其是使用的admin后台的时候, 依赖他本身的权限管理这一套, 涉及表:
django_content_type: 添加对应app_label和model记录
auth_permission: 添加对应操作项(Can add xxx,Can change xxx, Can delete xxx, Can view xxx)

5. 禁用编辑链接和添加,修改, 删除操作

在admin.py文件的具体类中

class MyModelAdmin(models.ModelAdmin):
...
List_display_links = None #禁用编辑链接 def has_add_permission(self, request):
# 禁用添加按钮
return False def has_delete_permission(self, request, obj=None):
# 禁用删除按钮
return False def has_change_permission(self, request, obj=None):
# 禁用修改按钮
return False def get_actions(self, request):
# 在actions中去掉‘删除’操作
actions = super(GradesManagementAdmin, self).get_actions(request)
if request.user.username[0].upper() != 'J':
if 'delete_selected' in actions:
del actions['delete_selected']
return actions

需要注意的是,这种禁用编辑链接的放法只是不让它在页面中显示,即把超链接去掉了,但是还是可以通过手动输入url的方式来进入编辑页面。不过可以配合设置fieldsets或者readonly_fieldss来达到目的。

6.常用设置项

1)展示模型字段

list_display= ('id', 'uid',)

  

2)设置隐藏信息

fieldsets = ()

fieldsets = (
('职业信息', {'fields': ('job','title',)}),
('人员信息', {
'classes': ('collapse',),
'fields':('person',),
})
)

3)将下拉框改成单选按钮

admin.HORIZONTAL  水平排列
admin.VERTICAL 垂直排列 radio_fields = ('person': admin.HORIZONTAL)

4).设置不可编辑字段

readonly_fields = []

readonly_fields = ['job']

5).设置升降序

ordering = []

ordering = ['id']
默认是升序,降序为 ordering = ['-id']

6).设置字段可以排序显示 sortable_by = []

sortable_by = ['job','title']

7).为字段设置路由地址,点击即进入修改页面  list_display_links=[]

list_display_links = ['id','job']

8)设置过滤器 list_filter = []

list_filter = ['job','title']

9)设置每一个的数量

设置每一页的数据量
list_per_page = 100 设置每一个的最大数据量
list_max_show_all = 200

10)设置字段可编辑  list_editable =[]

list_editable = ['title']

11)设置可搜索字段search_fields=[]

search_fields = ['job']

12)修改/admin页面的index的title

在APP文件下的__init__.py

13)修改中文字段中多处的‘s’

models.py中添加verbose_name_plural

14)后台文字描述修改

后台网页title修改
APP下的urls.py 最后添加
admin.site.site_title = '后台标题'
admin.site.site_header = '后台头部'
admin.site.index_title = '后台首页标题'

7, 文件上传并支持将docx文档内容转化为HTML

配置文件添加媒体路径:

MEDIA_ROOT = os.path.join(BASE_DIR, "uploads")

目录结构:

models.py

from django.db import models

from django.core import validators
from tinymce.models import HTMLField
from colorfield.fields import ColorField class UserAgreement(models.Model):
AGREE_TYPES = (
(1, '收集个人信息'),
(2, '共享个人信息'),
(3, '隐私协议'),
(4, '服务协议'),
)
appid = models.ForeignKey(Game, db_column='appid', null=True, default=0, on_delete=models.SET_NULL,
verbose_name='游戏')
type = models.IntegerField(default=0, choices=AGREE_TYPES, blank=True, verbose_name='类型')
content = HTMLField('内容')
background_color = ColorField(max_length=32, null=True, default='#fef9db', verbose_name='背景色')
upload_file = models.FileField(upload_to='', null=False, default='', validators=[
validators.FileExtensionValidator(['docx', 'doc', 'pdf'], message='请上传正确格式的文件')
], verbose_name='上传文件', help_text='支持上传的文件格式:pdf,doc,docx')
search_fields = ('appid',) def __str__(self):
return self.content class Meta:
db_table = "user_agreement"
verbose_name = verbose_name_plural = "用户相关协议表"

安装docx转换HTML包pydocx

pip install pydocx

admin.php 文件

from django.contrib import admin
from .models import * @admin.register(UserAgreement)
class UserAgreementAdmin(admin.ModelAdmin):
list_display = ('appid', 'type', 'content', 'background_color')
list_filter = ('appid',)
list_per_page = 10 autocomplete_fields = ('appid', ) def save_model(self, request, obj, form, change):
file = request.FILES.get('upload_file')
if file:
html = PyDocX.to_html(file)
obj.content = html
cache_key = RedisKey.USER_AGREEMENT.format(obj.appid_id, obj.type)
delete_cache(cache_key)
super().save_model(request, obj, form, change)

展示效果:

参考:Django实战: 手把手教你配置Django SimpleUI打造美丽后台(多图) - 知乎 (zhihu.com)

Django Admin之常用功能汇总的更多相关文章

  1. Hbuilder常用功能汇总

    引用 样式表: mui.min.css Js:mui.min.js 常用功能 获取页面 var webView=plus.webview.currentWebview();//获取当前页 var we ...

  2. Django admin自定制功能

    一:基础设置 1.应用注册 1)方式一 若要把app应用显示在后台管理中,需要在admin.py中注册.打开admin.py文件,如下代码: from django.contrib import ad ...

  3. Django Admin后台管理功能使用+二次开发

    一  使用环境 开发系统: windows IDE: pycharm 数据库: msyql,navicat 编程语言: python3.7  (Windows x86-64 executable in ...

  4. Python菜鸟之路:Django Admin后台管理功能使用

    前言 用过Django框架的童鞋肯定都知道,在创建完Django项目后,每个app下,都会有一个urls.py文件,里边会有如下几行: from django.contrib import admin ...

  5. django admin后台管理功能的学习

    1.简要说明 用过Django框架的童鞋肯定都知道,在创建完Django项目后,每个app下,都会有一个urls.py文件,里边会有如下几行: from django.contrib import a ...

  6. Django Admin后台管理功能使用

    前言 用过Django框架的童鞋肯定都知道,在创建完Django项目后,每个app下,都会有一个urls.py文件,里边会有如下几行: 1 2 3 4 5 from django.contrib im ...

  7. Django框架ORM常用字段汇总_模型层

    与数据类型相关的字段 CharField 作用:字符串字段, 用于较短的字符串. 参数:CharField 要求必须有一个参数 maxlength, 用于从数据库层和Django校验层限制该字段所允许 ...

  8. Idea 常用功能汇总,工作中常用技巧

    1.隐藏没用到的文件 比如 IDEA 的项目配置文件(.iml 和.idea),打开 Settings-File Types, 加入要隐藏的文件后缀.  2.常用技巧 2.1 通过Alt+F8查看变量 ...

  9. Idea 常用功能汇总,工作中常用技巧,移出请说明原因,笔记花了好长时间汇总的

    1.隐藏没用到的文件 比如 IDEA 的项目配置文件(.iml 和.idea),打开 Settings-File Types, 加入要隐藏的文件后缀.  2.常用技巧 2.1 通过Alt+F8查看变量 ...

  10. Django框架ORM常用参数汇总_模型层

    primary_key 如果为True,那么这个字段就是模型的主键. 如果你没有指定任何一个字段的primary_key=True, Django就会自动添加一个IntegerField字段做为主键, ...

随机推荐

  1. C#/.NET/.NET Core优质学习资料,干货收藏!

    前言 今天大姚给大家分享一些C#/.NET/.NET Core优质学习资料,希望可以帮助到有需要的小伙伴. 什么是 .NET? .NET 是一个免费的.跨平台的.开源开发人员平台,用于构建许多不同类型 ...

  2. HTML – Native Dialog Modal

    前言 之前介绍 Native Form 的时候有提及过 method="dialog", 但由于它太新了, 所以没去研究. 这篇就介绍一下. Dialog 也好 Modal 也好, ...

  3. APP专项测试之兼容性测试

    1.APP 兼容性测试认识 随着 APP 应用范围越来越广,用户群体越来越大,终端设备的型号也越来越多,移动终端碎片化加剧,使得 APP 兼容性测试成为测试质量保障必须要考虑的环节. APP 兼容性测 ...

  4. Maven 使用方法

    Maven Maven是一个项目管理工具,它包含了一个项目对象模型(POM:Project Object Model),其表现于一个XML文件(pom.xml),其中包含了项目的基本学习,依赖关系,插 ...

  5. 1.1 HELLO 窗口

    跟着教程,开始第一步创建窗口吧!这一节不涉及太多知识. 本节会出现一些名词,我们现在只需要知道它们大概是干什么的就行. ● GLFW:一个专门针对OpenGL的C语言库,通过它提供的接口,我们就可以渲 ...

  6. OpenFunction v1.1.0 发布:新增 v1beta2 API,支持 Dapr 状态管理

    OpenFunction 是一个开源的云原生 FaaS(Function as a Service,函数即服务)平台,旨在帮助开发者专注于业务逻辑的研发.在过去的几个月里,OpenFunction 社 ...

  7. (系列九)使用Vue3+Element Plus创建前端框架(附源码)

    说明 该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发). 该系统文章,我会尽量说的非常详细,做到不管新手.老手都能看懂. 说明:OverallAuth2 ...

  8. CSS动画(波光粼粼登录页面)

    1.整体效果 https://mmbiz.qpic.cn/sz_mmbiz_gif/EGZdlrTDJa4AbemkU3vLRIDzTIgPHSjicia97wfvMVAhqZL4lsGbQQCbsV ...

  9. 线性枚举(C语言)

    1.求最大值 比如求一个线性表中的最大值,可以先设定一个最大值,把它初始化为一个非常小的数,然后遍历给定的线性表,将其中的每个元素和目前的最大值比较,如果比它大,则更新这个最大值: 如果比它小,就不做 ...

  10. OpenGL常用函数整理

    常用函数 颜色设置 glClear(GL_COLOR_BUFFER_BIT); //清空颜色,GL_COLOR_BUFFER_BIT是颜色缓冲区 glClearColor(R,G,B,A); //设置 ...