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 yield与实现方法代码分析
Feb 06 Python
PyCharm代码整体缩进,反向缩进的方法
Jun 25 Python
Python实现查找最小的k个数示例【两种解法】
Jan 08 Python
Python使用pydub库对mp3与wav格式进行互转的方法
Jan 10 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
Feb 14 Python
Python基于opencv实现的简单画板功能示例
Mar 04 Python
使用Python完成15位18位身份证的互转功能
Nov 06 Python
基于python plotly交互式图表大全
Dec 07 Python
python实现局域网内实时通信代码
Dec 22 Python
Python3如何在Windows和Linux上打包
Feb 25 Python
python有几个版本
Jun 17 Python
OpenCV图片漫画效果的实现示例
Aug 18 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
不用iconv库的gb2312与utf-8的互换函数
2006/10/09 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
2014/06/08 PHP
PHP写日志的实现方法
2014/11/05 PHP
php数组查找函数总结
2014/11/18 PHP
Div自动滚动到末尾的代码
2008/10/26 Javascript
js 无提示关闭浏览器页面的代码
2010/03/09 Javascript
javascript,jquery闭包概念分析
2010/06/19 Javascript
关于JS字符串函数String.replace()
2013/04/07 Javascript
js读写(删除)Cookie实例详解
2013/04/17 Javascript
JS实现定时自动关闭DIV层提示框的方法
2015/05/11 Javascript
JavaScript中反正弦函数Math.asin()的使用简介
2015/06/14 Javascript
在jQuery中使用$而避免跟其它库产生冲突的方法
2015/08/13 Javascript
JavaScript实现的商品抢购倒计时功能示例
2017/04/17 Javascript
在 Node.js 中使用原生 ES 模块方法解析
2017/09/19 Javascript
JS基于for语句编写的九九乘法表示例
2018/01/04 Javascript
js中Object.defineProperty()方法的不详解
2018/07/09 Javascript
JavaScript解析机制与闭包原理实例详解
2019/03/08 Javascript
对layer弹出框中icon数字参数的说明介绍
2019/09/04 Javascript
解决Vue使用bus总线时,第一次路由跳转时数据没成功传递问题
2020/07/28 Javascript
[09:13]DOTA2-DPC中国联赛 正赛 Ehome vs Magma 选手采访 1月19日
2021/03/11 DOTA
java直接调用python脚本的例子
2014/02/16 Python
Python实现Youku视频批量下载功能
2017/03/14 Python
tensorflow训练中出现nan问题的解决
2018/02/10 Python
python 移除字符串尾部的数字方法
2018/07/17 Python
python中强大的format函数实例详解
2018/12/05 Python
Python使用Pickle模块进行数据保存和读取的讲解
2019/04/09 Python
利用python画出AUC曲线的实例
2020/02/28 Python
CSS3制作半透明边框(Facebox)类似渐变
2012/12/09 HTML / CSS
乌克兰第一的珠宝网上商店:Gold.ua
2019/11/29 全球购物
Servlet如何得到服务器的信息
2015/12/22 面试题
函授毕业自我鉴定
2013/12/19 职场文书
医院保洁员岗位职责
2015/02/13 职场文书
住房公积金贷款工资证明
2015/06/12 职场文书
2016年学校禁毒宣传活动工作总结
2016/04/05 职场文书
本地通过nginx配置反向代理的全过程记录
2021/03/31 Servers
Python进行区间取值案例讲解
2021/08/02 Python