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登录QQ邮箱发信的实现代码
Feb 10 Python
python网络编程学习笔记(10):webpy框架
Jun 09 Python
python中异常报错处理方法汇总
Nov 20 Python
Python工程师面试必备25条知识点
Jan 17 Python
Python使用jsonpath-rw模块处理Json对象操作示例
Jul 31 Python
使用 Python 实现简单的 switch/case 语句的方法
Sep 17 Python
Django框架登录加上验证码校验实现验证功能示例
May 23 Python
python小程序实现刷票功能详解
Jul 17 Python
在pytorch中为Module和Tensor指定GPU的例子
Aug 19 Python
Python接口开发实现步骤详解
Apr 26 Python
python中常见错误及解决方法
Jun 21 Python
浅谈keras 模型用于预测时的注意事项
Jun 27 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
Ajax PHP分页演示
2007/01/02 PHP
php使用websocket示例详解
2014/03/12 PHP
php+xml结合Ajax实现点赞功能完整实例
2015/01/30 PHP
php发送与接收流文件的方法
2015/02/11 PHP
php把时间戳转换成多少时间之前函数的实例
2016/11/16 PHP
PHP针对redis常用操作实例详解
2019/08/17 PHP
用按钮控制iframe显示的网页实现方法
2013/02/04 Javascript
js根据日期判断星座的示例代码
2014/01/23 Javascript
js利用prototype调用Array的slice方法示例
2014/06/09 Javascript
jquery通过扩展select控件实现支持enter或focus选择的方法
2015/11/19 Javascript
js实现div在页面拖动效果
2016/05/04 Javascript
ES6记录异步函数的执行时间详解
2016/08/31 Javascript
jquery popupDialog 使用 加载jsp页面的方法
2016/10/25 Javascript
JS实现的简易拖放效果示例
2016/12/29 Javascript
canvas绘制的直线动画
2017/01/23 Javascript
JS实现简易的图片拖拽排序实例代码
2017/06/09 Javascript
React学习之事件绑定的几种方法对比
2017/09/24 Javascript
JS去掉字符串末尾的标点符号及删除最后一个字符的方法
2017/10/24 Javascript
详解微信小程序canvas圆角矩形的绘制的方法
2018/08/22 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
Vue的双向数据绑定实现原理解析
2020/02/17 Javascript
vue项目配置同一局域网可使用ip访问的操作
2020/10/23 Javascript
详解Django中间件的5种自定义方法
2018/07/26 Python
Python 获取中文字拼音首个字母的方法
2018/11/28 Python
使用Python画股票的K线图的方法步骤
2019/06/28 Python
django 消息框架 message使用详解
2019/07/22 Python
pytorch 模拟关系拟合——回归实例
2020/01/14 Python
tensorflow之自定义神经网络层实例
2020/02/07 Python
Woolworth官网:澳洲第一大超市
2017/06/25 全球购物
GOOD AMERICAN官网:为曲线性感而设计
2017/12/28 全球购物
乌克兰珠宝大卖场:Zlato.ua
2020/09/27 全球购物
30年同学聚会感言
2014/01/30 职场文书
外贸采购员岗位职责
2014/03/08 职场文书
2016元旦晚会主持词开场白和结束语
2015/12/04 职场文书
最新农村养殖致富:资金投入较低的创业项目有哪些?
2019/09/26 职场文书
vue+springboot实现登录验证码
2021/05/27 Vue.js