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的Tornado框架中内置的模板引擎
Jul 11 Python
利用python生成一个导出数据库的bat脚本文件的方法
Dec 30 Python
TensorFlow入门使用 tf.train.Saver()保存模型
Apr 24 Python
Python中property函数用法实例分析
Jun 04 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
Jul 25 Python
在pycharm上mongodb配置及可视化设置方法
Nov 30 Python
Python matplotlib画图与中文设置操作实例分析
Apr 23 Python
Django 创建后台,配置sqlite3教程
Nov 18 Python
Python Pickle 实现在同一个文件中序列化多个对象
Dec 30 Python
Django中Q查询及Q()对象 F查询及F()对象用法
Jul 09 Python
python中numpy.empty()函数实例讲解
Feb 05 Python
python基础学习之递归函数知识总结
May 26 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 类商品秒杀计时实现代码
2010/05/05 PHP
表格展示无限级分类(PHP版)
2012/08/21 PHP
ajax php传递和接收变量实现思路及代码
2012/12/19 PHP
PHP判断一个gif图片是否为动态图片的方法
2014/11/19 PHP
PHP PDO操作MySQL基础教程
2017/06/05 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
2007/04/12 Javascript
初学JavaScript第二章
2008/09/30 Javascript
设置下载不需要倒计时cookie(倒计时代码)
2008/11/19 Javascript
IE与Firefox在JavaScript上的7个不同句法分享
2011/10/30 Javascript
玩转jQuery按钮 请告诉我你最喜欢哪些?
2012/01/08 Javascript
通过jquery还原含有rowspan、colspan的table的实现方法
2012/02/10 Javascript
javascript中的缓动效果实现程序
2012/12/29 Javascript
在jquery中combobox多选的不兼容问题总结
2013/12/24 Javascript
JavaScript获取IP获取的是IPV6 如何校验
2016/06/12 Javascript
如何理解jQuery中的ajaxSubmit方法
2017/03/13 Javascript
浅谈angularjs中响应回车事件
2017/04/24 Javascript
深入理解Vue 的条件渲染和列表渲染
2017/09/01 Javascript
解决vue-cli项目打包出现空白页和路径错误的问题
2018/09/04 Javascript
详解ES6中的 Set Map 数据结构学习总结
2018/11/06 Javascript
vue自定义正在加载动画的例子
2019/11/14 Javascript
js实现mp3录音通过websocket实时传送+简易波形图效果
2020/06/12 Javascript
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
浅谈python中set使用
2016/06/30 Python
Python做文本按行去重的实现方法
2016/10/19 Python
python编写暴力破解zip文档程序的实例讲解
2018/04/24 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
2020/02/20 Python
css3制作动态进度条以及附加jQuery百分比数字显示
2012/12/13 HTML / CSS
受外贸欢迎的美国主机:BlueHost
2017/05/16 全球购物
加拿大最大的钻石商店:Peoples Jewellers
2018/01/01 全球购物
全球领先的在线cosplay服装商店:RoleCosplay
2020/01/18 全球购物
酒店司机岗位职责
2013/12/14 职场文书
事业单位接收函
2014/01/10 职场文书
物业管理毕业生的自我评价
2014/02/17 职场文书
竞争上岗实施方案
2014/03/21 职场文书
spring cloud gateway中如何读取请求参数
2021/07/15 Java/Android