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函数参数*args**kwargs用法实例
Dec 04 Python
Python中实现对list做减法操作介绍
Jan 09 Python
Python中字符串格式化str.format的详细介绍
Feb 17 Python
python list排序的两种方法及实例讲解
Mar 20 Python
python如何统计序列中元素
Jul 31 Python
python:接口间数据传递与调用方法
Dec 17 Python
Python 硬币兑换问题
Jul 29 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
Aug 30 Python
Python爬虫使用代理IP的实现
Oct 27 Python
Python Socket TCP双端聊天功能实现过程详解
Jun 15 Python
Django REST 异常处理详解
Jul 15 Python
python简单验证码识别的实现过程
Jun 20 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
自己动手,丰衣足食 - 短波框形天线制作
2021/03/01 无线电
php中jpgraph类库的使用介绍
2013/08/08 PHP
php实现把数组按指定的个数分隔
2014/02/17 PHP
Smarty模板变量调节器用法分析
2016/05/23 PHP
js 实现复制到粘贴板的功能代码
2010/05/13 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件打包下载
2010/09/15 Javascript
24款非常有用的 jQuery 插件分享
2011/04/06 Javascript
JQuery中操作Css样式的方法
2014/02/12 Javascript
js日期联动示例
2014/05/02 Javascript
jquery实现预览提交的表单代码分享
2014/05/21 Javascript
javascript实现全角与半角字符的转换
2015/01/07 Javascript
jQuery EasyUI Pagination实现分页的常用方法
2016/05/21 Javascript
Bootstrap实现带暂停功能的轮播组件(推荐)
2016/11/25 Javascript
AngulaJS路由 ui-router 传参实例
2017/04/28 Javascript
vue router 跳转后回到顶部的实例
2018/08/31 Javascript
vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
2018/09/14 Javascript
一个小时快速搭建微信小程序的方法步骤
2019/04/15 Javascript
Javascript实现关闭广告效果
2021/01/29 Javascript
在Apache服务器上同时运行多个Django程序的方法
2015/07/22 Python
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
2017/04/17 Python
ubuntu上安装python的实例方法
2019/09/30 Python
Pytorch 实现sobel算子的卷积操作详解
2020/01/10 Python
django2.2 和 PyMySQL版本兼容问题
2020/02/17 Python
Python 开发工具通过 agent 代理使用的方法
2020/09/27 Python
Django基于Models定制Admin后台实现过程解析
2020/11/11 Python
Python环境搭建过程从安装到Hello World
2021/02/05 Python
html5 Canvas画图教程(11)—使用lineTo/arc/bezierCurveTo画椭圆形
2013/01/09 HTML / CSS
canvas线条的属性详解
2018/03/27 HTML / CSS
幼儿园大班毕业感言
2014/02/06 职场文书
毕业生写求职信的要点
2014/03/04 职场文书
美容院店长岗位职责
2014/04/08 职场文书
党的群众路线教育实践活动总结材料
2014/10/30 职场文书
同意落户证明
2015/06/19 职场文书
公司晚宴祝酒词
2015/08/11 职场文书
年终工作总结范文
2019/06/20 职场文书
防止web项目中的SQL注入
2021/12/06 MySQL