Django Admin设置应用程序及模型顺序方法详解


Posted in Python onApril 01, 2020

Django默认情况下,按字母顺序对模型进行排序。因此,Event应用模型的顺序为Epic、EventHero、EventVillain、Event

假设你希望顺序是

EventHero、EventVillain、Epic、Event。

用于呈现后台indxe页面的模板为admin/index.html,对应的视图函数为 ModelAdmin.index。

def index(self, request, extra_context=None):
  """
  Display the main admin index page, which lists all of the installed
  apps that have been registered in this site.
  """
  app_list = self.get_app_list(request)
  context = {
    **self.each_context(request),
    'title': self.index_title,
    'app_list': app_list,
    **(extra_context or {}),
  }
  request.current_app = self.name
  return TemplateResponse(request, self.index_template or
    'admin/index.html', context)

默认的get_app_list方法用于设置模型的顺序。

def get_app_list(self, request):
  """
  Return a sorted list of all the installed apps that have been
  registered in this site.
  """
  app_dict = self._build_app_dict(request)

  # Sort the apps alphabetically.
  app_list = sorted(app_dict.values(), key=lambda x: x['name'].lower())

  # Sort the models alphabetically within each app.
  for app in app_list:
    app['models'].sort(key=lambda x: x['name'])
  return app_list

因此,可以通过覆盖get_app_list方法来修改显示顺序:

class EventAdminSite(AdminSite):
  def get_app_list(self, request):
    """
    Return a sorted list of all the installed apps that have been
    registered in this site.
    """
    ordering = {
      "Event heros": 1,
      "Event villains": 2,
      "Epics": 3,
      "Events": 4
    }
    app_dict = self._build_app_dict(request)
    # a.sort(key=lambda x: b.index(x[0]))
    # Sort the apps alphabetically.
    app_list = sorted(app_dict.values(), key=lambda x: x['name'].lower())
    # Sort the models alphabetically within each app.
    for app in app_list:
      app['models'].sort(key=lambda x: ordering[x['name']])
    return app_list

以上代码app['models'].sort(key=lambda x: ordering[x['name']])用来设置默认顺序。修改后效果如下。

Django Admin设置应用程序及模型顺序方法详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中使用tarfile压缩、解压tar归档文件示例
Apr 05 Python
在Django中URL正则表达式匹配的方法
Dec 20 Python
Python设计模式之代理模式实例详解
Jan 19 Python
Django集成CAS单点登录的方法示例
Jun 10 Python
给你一面国旗 教你用python画中国国旗
Sep 24 Python
Python中itertools的用法详解
Feb 07 Python
Python找出列表中出现次数最多的元素三种方式
Feb 24 Python
Python文件夹批处理操作代码实例
Jul 21 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
Nov 13 Python
Python虚拟环境virtualenv创建及使用过程图解
Dec 08 Python
Python-split()函数实例用法讲解
Dec 18 Python
python+pytest接口自动化之token关联登录的实现
Apr 06 Python
django API 中接口的互相调用实例
Apr 01 #Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
Apr 01 #Python
Python greenlet和gevent使用代码示例解析
Apr 01 #Python
Django-rest-framework中过滤器的定制实例
Apr 01 #Python
Python如何操作office实现自动化及win32com.client的运用
Apr 01 #Python
Django之choices选项和富文本编辑器的使用详解
Apr 01 #Python
Python AutoCAD 系统设置的实现方法
Apr 01 #Python
You might like
上海永华YH-R296(华普R-96)12波段立体声收音机的分析和打理
2021/03/02 无线电
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
PHP按行读取、处理较大CSV文件的代码实例
2014/04/09 PHP
微信自定义菜单的处理开发示例
2015/04/16 PHP
利用laravel+ajax实现文件上传功能方法示例
2017/08/13 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
JavaScript 仿关机效果的图片层
2008/12/26 Javascript
js特效,页面下雪的小例子
2013/06/17 Javascript
22点关于jquery性能优化的建议
2014/05/28 Javascript
Bootstrap安装环境配置教程分享
2016/05/27 Javascript
Javascript this 函数深入详解
2016/12/13 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
2017/04/13 Javascript
VUE实现可随意拖动的弹窗组件
2018/09/25 Javascript
Vue 幸运大转盘实现思路详解
2019/05/06 Javascript
JS定时器如何实现提交成功提示功能
2020/06/12 Javascript
Vue全局使用less样式,组件使用全局样式文件中定义的变量操作
2020/10/21 Javascript
讲解Python中if语句的嵌套用法
2015/05/14 Python
Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析
2018/05/08 Python
由Python编写的MySQL管理工具代码实例
2019/04/09 Python
python3字符串操作总结
2019/07/24 Python
浅析Python 引号、注释、字符串
2019/07/25 Python
ORM Django 终端打印 SQL 语句实现解析
2019/08/09 Python
修改 CentOS 6.x 上默认Python的方法
2019/09/06 Python
python Gabor滤波器讲解
2020/10/26 Python
CAT鞋美国官网:CAT Footwear
2017/11/27 全球购物
荷兰男士时尚网上商店:Suitable
2017/12/25 全球购物
将一个数的从第5位开始的7个数取出,其余位置0
2016/05/26 面试题
材料专业毕业生求职信
2014/02/26 职场文书
电子商务专业应届生求职信
2014/05/28 职场文书
陈胜吴广起义口号
2014/06/20 职场文书
海洋科学专业求职信
2014/08/10 职场文书
大学生档案自我鉴定(2篇)
2014/10/14 职场文书
教代会开幕词
2015/01/28 职场文书
酒店温馨提示语
2015/07/14 职场文书
原生JS封装vue Tab切换效果
2021/04/28 Vue.js
PyCharm 配置SSH和SFTP连接远程服务器
2022/05/11 Python