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使用ftplib实现简易FTP客户端的方法
Jun 03 Python
python实现下载指定网址所有图片的方法
Aug 08 Python
Python网络编程 Python套接字编程
Sep 13 Python
基于Django的python验证码(实例讲解)
Oct 23 Python
对Python3.x版本print函数左右对齐详解
Dec 22 Python
pycharm的console输入实现换行的方法
Jan 16 Python
python计算阶乘和的方法(1!+2!+3!+...+n!)
Feb 01 Python
Python中一般处理中文的几种方法
Mar 06 Python
Python利用scapy实现ARP欺骗的方法
Jul 23 Python
django解决订单并发问题【推荐】
Jul 31 Python
Python进度条的制作代码实例
Aug 31 Python
python OpenCV学习笔记
Mar 31 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
星际RPG字典
2020/03/04 星际争霸
无数据库的详细域名查询程序PHP版(4)
2006/10/09 PHP
用来给图片加水印的PHP类
2008/04/09 PHP
Apache2中实现多网站域名绑定的实现方法
2011/06/01 PHP
xss防御之php利用httponly防xss攻击
2014/03/21 PHP
php获得文件夹下所有文件的递归算法的简单实例
2016/11/01 PHP
PHP控制反转(IOC)和依赖注入(DI)
2017/03/13 PHP
thinkphp框架page类与bootstrap分页(美化)
2017/06/25 PHP
实例讲解PHP验证邮箱是否合格
2019/01/28 PHP
国外的为初学者写的JavaScript教程
2008/06/09 Javascript
jQuery Div中加载其他页面的实现代码
2009/02/27 Javascript
JavaScript 乱码问题
2009/08/06 Javascript
父页面显示遮罩层弹出半透明状态的dialog
2014/03/04 Javascript
javascript学习笔记(三)BOM和DOM详解
2014/09/30 Javascript
jQuery中extend函数详解
2015/02/13 Javascript
PHP结合jQuery实现的评论顶、踩功能
2015/07/22 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
2015/09/09 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
2016/04/18 Javascript
JavaScript的ExtJS框架中数面板TreePanel的使用实例解析
2016/05/21 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
2016/12/20 Javascript
JS中Array数组学习总结
2017/01/18 Javascript
微信小程序 图片宽度自适应的实现
2017/04/06 Javascript
CheckBox多选取值及判断CheckBox选中是否为空的实例
2017/10/31 Javascript
js实现ATM机存取款功能
2020/10/27 Javascript
原理深度解析Vue的响应式更新比React快
2020/04/04 Javascript
python基础教程之lambda表达式使用方法
2014/02/12 Python
解决Python中字符串和数字拼接报错的方法
2016/10/23 Python
Python如何在main中调用函数内的函数方式
2020/06/01 Python
一套C++笔试题面试题
2012/06/06 面试题
大学生未来职业生涯规划书
2014/02/15 职场文书
基层党员对照检查材料
2014/09/24 职场文书
大学生档案自我鉴定(2篇)
2014/10/14 职场文书
义卖募捐活动总结
2015/05/09 职场文书
幼儿园秋季开学通知
2015/07/16 职场文书
民事纠纷协议书
2016/03/23 职场文书
Python+Pillow+Pytesseract实现验证码识别
2022/05/11 Python