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

陈占占
• 阅读 1195

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

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

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

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

2.Django 映射

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

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

(1)inspectdb 创建的表

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

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

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

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

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

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

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

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

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

(3) 映射一下

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

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

from django.contrib import admin
# from  你自己的项目.models import *
from book_MS.models import *
# 日期  可以选择加或者不加
# from django.utils import timezone


@admin.register(Moderate)
# admin.site.register(要写的表)  与  @admin.register(要写的表)  功能是一样的
class ModerateAdmin(admin.ModelAdmin):
    """
        *MySQL数据库moderate表:id, 名字, 内容,是否通过, 是否已审核
        'id', 'name', 'incident', 'status', 'check'
    """
# listdisplay设置要显示在列表中的字段(id字段是Django模型的默认主键)
    list_display = ('name', 'incident', 'status', )
    # list_per_page设置每页显示多少条记录,默认是10条
    list_per_page = 10
    # list_filter过滤指定的字段
    list_filter = ('name', )

    # 修改admin页面actions的信息
    actions = ['mak_pub', 'mak_pub1']

    # 判断通过的
    def mak_pub(self, request, queryset):
        # 获取当前用户的名字
        us = request.user
        # 打印通过的数据
        for i in queryset.filter():
            # print(i.id)
            # 创建str,如果要加时间的话,就加上下面的代码
            # str = '{} {}更改了Moderate表的id为{}的信息:已通过,审核成功!'.format(timezone.now(), us, i.id)
            str = '{}更改了Moderate表的id为{}的信息:已通过,审核成功!'.format(us, i.id)
            # 插入数据到Log表中
            ModerateLog.objects.create(record=str)

        # 更新状态和审核
        rows_upb = queryset.update(status="1", check="1")
        # 如果获取的数是1,则执行下面代码
        if rows_upb == 1:
            message_bit = "1个视频"
        else:
            message_bit = "%s 个视频" % rows_upb
        # 通过多少的数据,显示到admin页面上
        self.message_user(request, "%s 已经通过." % message_bit)
    # 更改Action的内容为通过
    mak_pub.short_description = "通过"

    # 判断未通过的
    def mak_pub1(self, request, queryset):
        # 获取当前的用户
        us = request.user
        # 打印未通过的数据
        for i in queryset.filter():
            print(i)
            # 创建str
            str = '{}更改了Moderate表的id为{}的信息:未通过,审核成功!'.format(us, i.id)
            # 插入数据到Log表中
            ModerateLog.objects.create(record=str)
        # 更新状态和审核
        rows_upb = queryset.update(status="0", check="1")
        # 如果获取的数是1,则执行下面代码
        if rows_upb == 1:
            message_bit = "1个视频"
        else:
            message_bit = "%s 个视频" % rows_upb
        # 通过多少的数据,显示到admin页面上
        self.message_user(request, "%s 拒绝通过." % message_bit)
    # 更改Action的内容为通过
    mak_pub1.short_description = "未通过"

    # 重写已经审核过的数据,超级管理员不会通过
    def get_queryset(self, request):
        # 获取当前表所有的数据
        qs = super().get_queryset(request)
        # 判断是否未超级管理员,如果是就显示所有(已审核和未审核)的信息,不是就显示未审核的信息
        if request.user.is_superuser:
            return qs
        return qs.filter(check=0)

4.登入 admin 后台管理

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

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

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

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

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

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

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

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

7.效果

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

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

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

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

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

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
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
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这