• Django Admin之常用功能汇总 X


    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 = '后台首页标题'

     

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

  • 相关阅读:
    Test-Driven Development
    单元测试之道(使用NUnit)
    IoC--structuremap
    web.config的configSections节点
    【转】理解POCO
    js的call(obj,arg)学习笔记
    css隐藏滚动条方法
    regexp学习
    asp后台拼接百度ueditor编辑器过程
    php关键词construct和static
  • 原文地址:https://www.cnblogs.com/xingxia/p/django_admins.html
Copyright © 2020-2023  润新知