zoukankan      html  css  js  c++  java
  • django后台管理-admin

    0922自我总结

    django后台管理-admin

    一.模型注册

    admin.py

    注册方式一:

    #在对于注册的app中的admin文件中导入模型然后注册模型
    admin.site.register(导入的模型类)
    

    注册方式二该方法是Django1.7的版本新增的功能:

    from django.contrib import admin
    from blog.models import Blog
      
    #Blog模型的管理器
    @admin.register(Blog)
    class BlogAdmin(admin.ModelAdmin):
        list_display=('id', 'caption', 'author', 'publish_time')
    

    二.admin界面的汉化

    默认admin后台管理界面是英文的,对英语盲来说用起来不方便。可以在settings.py中设置:
    LANGUAGE_CODE = 'zh-CN'
    TIME_ZONE = 'Asia/Shanghai'
    1.8版本之后的language code设置不同:
    LANGUAGE_CODE = 'zh-hans'
    TIME_ZONE = 'Asia/Shanghai'
    

    三.admin界面优化

    1、记录列表基本设置

    from django.contrib import admin
    from blog.models import Blog
      
    #Blog模型的管理器
    @admin.register(Blog)
    class BlogAdmin(admin.ModelAdmin):
        #listdisplay设置要显示在列表中的字段(id字段是Django模型的默认主键)
        list_display = ('id', 'caption', 'author', 'publish_time')
        
        #list_per_page设置每页显示多少条记录,默认是100条
        list_per_page = 50
        
        #ordering设置默认排序字段,负号表示降序排序
        ordering = ('-publish_time',)
      
        #list_editable 设置默认可编辑字段
        list_editable = ['machine_room_id', 'temperature']
      
        #fk_fields 设置显示外键字段
         fk_fields = ('machine_room_id',)
    

    2、筛选器

    from django.contrib import admin
    from blog.models import Blog
      
    #Blog模型的管理器
    @admin.register(Blog)
    class BlogAdmin(admin.ModelAdmin):
        list_display = ('id', 'caption', 'author', 'publish_time')
         
        #筛选器
        list_filter =('trouble', 'go_time', 'act_man__user_name', 'machine_room_id__machine_room_name') #过滤器
        search_fields =('server', 'net', 'mark') #搜索字段
        date_hierarchy = 'go_time'    # 详细时间分层筛选 时间相关字段
    

    此处注意:

    使用 date_hierarchy 进行详细时间筛选的时候 可能出现报错:Database returned an invalid datetime value. Are time zone definitions for your database and pytz installed?

    处理方法:

    命令行直接执行此命令: [root@mysql ~]# mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql

    然后重启数据库即可。

    一般ManyToManyField多对多字段用过滤器;标题等文本字段用搜索框;日期时间用分层筛选。

    过滤器如果是外键需要遵循这样的语法:本表字段__外键表要显示的字段。如:“user__user_name”

    3、颜色显示

    from django.db import models
    from django.contrib import admin
    from django.utils.html import format_html
     
    class Person(models.Model):
        first_name = models.CharField(max_length=50)
        last_name = models.CharField(max_length=50)
        color_code = models.CharField(max_length=6)
     
        def colored_name(self):
            return format_html(
                '<span style="color: #{};">{} {}</span>',
                self.color_code,
                self.first_name,
                self.last_name,
            )
     
    class PersonAdmin(admin.ModelAdmin):
        list_display = ('first_name', 'last_name', 'colored_name')
    

    注意看上面代码,是写在models里,而不是admin中的ModelAdmin里

    4.调整页面头部显示内容和页面标题

    class MyAdminSite(admin.AdminSite):
        site_header = 'xx'  # 此处设置页面显示标题
        site_title = 'xxx'  # 此处设置页面头部标题
     
    admin_site = MyAdminSite(name='management')
    

    需要注意的是: admin_site = MyAdminSite(name='management') 此处括号内name值必须设置,否则将无法使用admin设置权限,至于设置什么值,经本人测试,没有影响。

    具体内容请看:https://www.cnblogs.com/wumingxiaoyao/p/6928297.html

  • 相关阅读:
    Jzoj4822 完美标号
    Jzoj4822 完美标号
    Jzoj4792 整除
    Jzoj4792 整除
    Educational Codeforces Round 79 A. New Year Garland
    Good Bye 2019 C. Make Good
    ?Good Bye 2019 B. Interesting Subarray
    Good Bye 2019 A. Card Game
    力扣算法题—088扰乱字符串【二叉树】
    力扣算法题—086分隔链表
  • 原文地址:https://www.cnblogs.com/pythonywy/p/11568685.html
Copyright © 2011-2022 走看看