Django 通过 admin 操作 MySQL数据库 ,审核功能加储存记录

1.创建MySQL数据库 moderate 表 和 moderate_log(储存记录) 表

image

image

image

2.Django 映射

image

image

(1)inspectdb 创建的表

image

image

image

(2) 复制红色的框框的内容,粘贴到 models.py 文件

可以加下面的代码或者不加也行,加的话要映射一下

1verbose_name = "Moderate" # 首页列表的显示名称 2verbose_name_plural = verbose_name # 列表页和详情页的显示名称

image

image

image

(3) 映射一下

image

3.在 admin.py 文件 编写代码(核心代码)

1from django.contrib import admin 2# from 你自己的项目.models import * 3from book_MS.models import * 4# 日期 可以选择加或者不加 5# from django.utils import timezone 6 7 8@admin.register(Moderate) 9# admin.site.register(要写的表) 与 @admin.register(要写的表) 功能是一样的 10class ModerateAdmin(admin.ModelAdmin): 11 """ 12 *MySQL数据库moderate表:id, 名字, 内容,是否通过, 是否已审核 13 'id', 'name', 'incident', 'status', 'check' 14 """ 15# listdisplay设置要显示在列表中的字段(id字段是Django模型的默认主键) 16 list_display = ('name', 'incident', 'status', ) 17 # list_per_page设置每页显示多少条记录,默认是1018 list_per_page = 10 19 # list_filter过滤指定的字段 20 list_filter = ('name', ) 21 22 # 修改admin页面actions的信息 23 actions = ['mak_pub', 'mak_pub1'] 24 25 # 判断通过的 26 def mak_pub(self, request, queryset): 27 # 获取当前用户的名字 28 us = request.user 29 # 打印通过的数据 30 for i in queryset.filter(): 31 # print(i.id) 32 # 创建str,如果要加时间的话,就加上下面的代码 33 # str = '{} {}更改了Moderate表的id为{}的信息:已通过,审核成功!'.format(timezone.now(), us, i.id) 34 str = '{}更改了Moderate表的id为{}的信息:已通过,审核成功!'.format(us, i.id) 35 # 插入数据到Log表中 36 ModerateLog.objects.create(record=str) 37 38 # 更新状态和审核 39 rows_upb = queryset.update(status="1", check="1") 40 # 如果获取的数是1,则执行下面代码 41 if rows_upb == 1: 42 message_bit = "1个视频" 43 else: 44 message_bit = "%s 个视频" % rows_upb 45 # 通过多少的数据,显示到admin页面上 46 self.message_user(request, "%s 已经通过." % message_bit) 47 # 更改Action的内容为通过 48 mak_pub.short_description = "通过" 49 50 # 判断未通过的 51 def mak_pub1(self, request, queryset): 52 # 获取当前的用户 53 us = request.user 54 # 打印未通过的数据 55 for i in queryset.filter(): 56 print(i) 57 # 创建str 58 str = '{}更改了Moderate表的id为{}的信息:未通过,审核成功!'.format(us, i.id) 59 # 插入数据到Log表中 60 ModerateLog.objects.create(record=str) 61 # 更新状态和审核 62 rows_upb = queryset.update(status="0", check="1") 63 # 如果获取的数是1,则执行下面代码 64 if rows_upb == 1: 65 message_bit = "1个视频" 66 else: 67 message_bit = "%s 个视频" % rows_upb 68 # 通过多少的数据,显示到admin页面上 69 self.message_user(request, "%s 拒绝通过." % message_bit) 70 # 更改Action的内容为通过 71 mak_pub1.short_description = "未通过" 72 73 # 重写已经审核过的数据,超级管理员不会通过 74 def get_queryset(self, request): 75 # 获取当前表所有的数据 76 qs = super().get_queryset(request) 77 # 判断是否未超级管理员,如果是就显示所有(已审核和未审核)的信息,不是就显示未审核的信息 78 if request.user.is_superuser: 79 return qs 80 return qs.filter(check=0)

4.登入 admin 后台管理

(1)先登入超级管理员,创建管理员,然后给管理员的查看和修改 moderate 表 和 moderate_log(储存记录) 表的权限

image

(2) 记得勾上职员状态,否则无法登陆

image

5.登入刚刚创建的管理员

image

image

6.添加数据测试一下,到MySQL数据库手动输入几条数据

7.效果

(1)点击通过或者未通过,执行后会隐藏,只有超级管理员才能看见,并且会记录到 moderate_log(储存记录)表中

image

image

image

image

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Python3:sqlalchemy对mysql数据库操作,非sql语句

Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''

KVM调整cpu和内存

一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid