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抓取京东图书评论数据
Aug 31 Python
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
May 27 Python
解决python3 json数据包含中文的读写问题
May 10 Python
使用Python监控文件内容变化代码实例
Jun 04 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
Dec 04 Python
pyinstaller打包单个exe后无法执行错误的解决方法
Jun 21 Python
django中SMTP发送邮件配置详解
Jul 19 Python
Python collections中的双向队列deque简单介绍详解
Nov 04 Python
Python imread、newaxis用法详解
Nov 04 Python
Python中__repr__和__str__区别详解
Nov 07 Python
区分python中的进程与线程
Aug 13 Python
如何判断pytorch是否支持GPU加速
Jun 01 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 array_search() 函数使用
2010/04/13 PHP
在PHP中养成7个面向对象的好习惯
2010/07/17 PHP
如何使用PHP批量去除文件UTF8 BOM信息
2013/08/05 PHP
PHP中使用addslashes函数转义的安全性原理分析
2014/11/03 PHP
php文件管理基本功能简单操作
2017/01/16 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
Jquery ajax不能解析json对象,报Invalid JSON错误的原因和解决方法
2010/03/27 Javascript
asp.net 30分钟掌握无刷新 Repeater
2011/09/16 Javascript
nodejs的require模块(文件模块/核心模块)及路径介绍
2013/01/14 NodeJs
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
Eclipse配置Javascript开发环境图文教程
2015/01/29 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
arguments对象验证函数的参数是否合法
2015/06/26 Javascript
JavaScript判断IE版本型号
2015/07/27 Javascript
Bootstrap在线电子商务网站实战项目5
2016/10/14 Javascript
微信小程序 时间格式化(util.formatTime(new Date))详解
2016/11/16 Javascript
基于jQuery Ajax实现下拉框无刷新联动
2017/12/06 jQuery
webpack打包非模块化js的方法
2018/10/24 Javascript
JS实现图片切换效果
2018/11/17 Javascript
Vue.js实现可排序的表格组件功能示例
2019/02/19 Javascript
Vue 中 a标签上href无法跳转的解决方式
2019/11/12 Javascript
[51:10]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python 实现归并排序算法
2012/06/05 Python
Python中使用Boolean操作符做真值测试实例
2015/01/30 Python
Python数据可视化正态分布简单分析及实现代码
2017/12/04 Python
pandas series序列转化为星期几的实例
2018/04/11 Python
使用python实现回文数的四种方法小结
2019/11/24 Python
如何基于python操作excel并获取内容
2019/12/24 Python
利用CSS3实现自定义滚动条代码分享
2016/08/18 HTML / CSS
Bose加拿大官方网站:美国知名音响品牌
2019/03/21 全球购物
新加坡一家在线男士皮具品牌:Faire Leather Co.
2019/12/01 全球购物
室内设计专业个人的自我评价
2013/10/19 职场文书
销售高级职员求职信
2013/10/29 职场文书
大学生入党群众意见书
2015/06/02 职场文书
网络研修随笔感言
2015/11/18 职场文书
Nginx设置日志打印post请求参数的方法
2021/03/31 Servers