zoukankan      html  css  js  c++  java
  • Django 通过 admin 操作 MySQL数据库 ,审核功能加储存记录

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

     

    2.Django 映射

     

     

    (1)inspectdb 创建的表

     

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

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

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

    (3) 映射一下

    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(储存记录) 表的权限

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

     

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

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

     7.效果

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

    永远的新手
  • 相关阅读:
    ASP.NET Web API 控制器执行过程(一)
    ASP.NET Web API 控制器创建过程(二)
    ASP.NET Web API 控制器创建过程(一)
    ASP.NET Web API WebHost宿主环境中管道、路由
    ASP.NET Web API Selfhost宿主环境中管道、路由
    ASP.NET Web API 管道模型
    ASP.NET Web API 路由对象介绍
    ASP.NET Web API 开篇示例介绍
    ASP.NET MVC 视图(五)
    ASP.NET MVC 视图(四)
  • 原文地址:https://www.cnblogs.com/chenzhanxu/p/14771610.html
Copyright © 2011-2022 走看看