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读写Excel文件方法介绍
Nov 22 Python
python实现批量改文件名称的方法
May 25 Python
用pickle存储Python的原生对象方法
Apr 28 Python
Python3 伪装浏览器的方法示例
Nov 23 Python
python判断数字是否是超级素数幂
Sep 27 Python
Python socket模块实现的udp通信功能示例
Apr 10 Python
python爬虫 urllib模块发起post请求过程解析
Aug 20 Python
Django框架 querySet功能解析
Sep 04 Python
从pandas一个单元格的字符串中提取字符串方式
Dec 17 Python
Pytorch 多块GPU的使用详解
Dec 31 Python
Python基础类继承重写实现原理解析
Apr 03 Python
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
Jun 11 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
社区(php&&mysql)三
2006/10/09 PHP
PHP一些有意思的小区别
2006/12/06 PHP
PHP采用curl模仿用户登陆新浪微博发微博的方法
2014/11/07 PHP
PHP图片处理之图片旋转和图片翻转实例
2014/11/19 PHP
php通过前序遍历树实现无需递归的无限极分类
2015/07/10 PHP
php微信浏览器分享设置以及回调详解
2016/08/01 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
在网页中控制wmplayer播放器
2006/07/01 Javascript
javascript this用法小结
2008/12/19 Javascript
使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇
2010/05/07 Javascript
JavaScript 继承使用分析
2011/05/12 Javascript
Jquery中LigerUi的弹出编辑框(实现方法)
2013/07/09 Javascript
JS实现时间格式化的方式汇总
2013/10/16 Javascript
Jquery原生态实现表格header头随滚动条滚动而滚动
2014/03/18 Javascript
JS点击缩略图整屏居中放大图片效果
2017/07/04 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
详解从vue-loader源码分析CSS Scoped的实现
2019/09/23 Javascript
nuxt.js 在middleware(中间件)中实现路由鉴权操作
2020/11/06 Javascript
[50:44]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第二场 2月22日
2021/03/11 DOTA
详解Python的Django框架中的模版继承
2015/07/16 Python
Django Admin 实现外键过滤的方法
2017/09/29 Python
解决win64 Python下安装PIL出错问题(图解)
2018/09/03 Python
破解安装Pycharm的方法
2018/10/19 Python
Python使用pymongo库操作MongoDB数据库的方法实例
2019/02/22 Python
解决django中ModelForm多表单组合的问题
2019/07/18 Python
Python爬虫 bilibili视频弹幕提取过程详解
2019/07/31 Python
Python3并发写文件与Python对比
2019/11/20 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
2020/04/22 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
2020/07/01 Python
canvas画图被放大且模糊的解决方法
2020/08/11 HTML / CSS
菲律宾酒店预订网站:Hotels.com菲律宾
2017/07/12 全球购物
LINUX下线程,GDI类的解释
2012/04/17 面试题
2014年班务工作总结
2014/12/02 职场文书
2014五年级班主任工作总结
2014/12/05 职场文书
文明倡议书
2015/01/19 职场文书
实验室安全管理制度
2015/08/05 职场文书