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 相关文章推荐
pycharm 使用心得(三)Hello world!
Jun 05 Python
Python编码类型转换方法详解
Jul 01 Python
python构建深度神经网络(DNN)
Mar 10 Python
python pandas 对时间序列文件处理的实例
Jun 22 Python
浅谈django rest jwt vue 跨域问题
Oct 26 Python
Python后台开发Django的教程详解(启动)
Apr 08 Python
python调试神器PySnooper的使用
Jul 03 Python
python代码实现逻辑回归logistic原理
Aug 07 Python
使用pytorch和torchtext进行文本分类的实例
Jan 08 Python
使用Python脚本从文件读取数据代码实例
Jan 19 Python
通过实例解析python描述符原理作用
Jan 22 Python
Python定时任务APScheduler安装及使用解析
Aug 07 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 output buffering缓存及程序缓存深入解析
2013/07/15 PHP
php中url传递中文字符,特殊危险字符的解决方法
2013/08/17 PHP
PHP实现的数独求解问题示例
2017/04/18 PHP
javascript RadioButtonList获取选中值
2009/04/09 Javascript
WordPress JQuery处理沙发头像
2009/06/22 Javascript
jquery重新播放css动画所遇问题解决
2013/08/21 Javascript
用javascript将数据导入Excel示例代码
2014/09/10 Javascript
JavaScript判断IE版本型号
2015/07/27 Javascript
jQuery日历插件datepicker用法详解
2016/03/03 Javascript
JQuery解析XML的方法小结
2016/04/02 Javascript
jQuery中slidedown与slideup方法用法示例
2016/09/16 Javascript
js实现用户输入的小写字母自动转大写字母的方法
2017/01/21 Javascript
使用 NodeJS+Express 开发服务端的简单介绍
2017/04/07 NodeJs
微信小程序 自定义消息提示框
2017/08/06 Javascript
利用CDN加速react webpack打包后的文件详解
2018/02/22 Javascript
基于Vuex无法观察到值变化的解决方法
2018/03/01 Javascript
深度了解vue.js中hooks的相关知识
2019/06/14 Javascript
如何在 Vue 表单中处理图片
2021/01/26 Vue.js
[54:18]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第一场 1月22日
2021/03/11 DOTA
Python算法之求n个节点不同二叉树个数
2017/10/27 Python
Python实现二叉树的常见遍历操作总结【7种方法】
2019/03/06 Python
关于python3中setup.py小概念解析
2019/08/22 Python
Pytorch提取模型特征向量保存至csv的例子
2020/01/03 Python
TensorFlow实现指数衰减学习率的方法
2020/02/05 Python
Python gevent协程切换实现详解
2020/09/14 Python
css3动画事件—webkitAnimationEnd与计时器time事件
2013/01/31 HTML / CSS
方太官方网上商城:销售方太抽油烟机、燃气灶、消毒柜等
2017/01/17 全球购物
澳大利亚在线购买儿童玩具:Toy Universe
2017/12/28 全球购物
几个常见的软件测试问题
2016/09/07 面试题
采购部岗位职责
2013/11/24 职场文书
幼儿园法制宣传日活动总结
2014/11/01 职场文书
小学教代会开幕词
2016/03/04 职场文书
HTML速写之Emmet语法规则的实现
2021/04/07 HTML / CSS
基于HTML十秒做出淘宝页面
2021/10/24 HTML / CSS
Python GUI编程之tkinter 关于 ttkbootstrap 的使用详解
2022/03/03 Python
mysql全面解析json/数组
2022/07/07 MySQL