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获得时间的实例说明
Mar 25 Python
使用Python制作获取网站目录的图形化程序
May 04 Python
Python ldap实现登录实例代码
Sep 30 Python
python编程测试电脑开启最大线程数实例代码
Feb 09 Python
Python和Go语言的区别总结
Feb 20 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
Apr 03 Python
python tkinter基本属性详解
Sep 16 Python
Django 请求Request的具体使用方法
Nov 11 Python
python Shapely使用指南详解
Feb 18 Python
TensorFlow中如何确定张量的形状实例
Jun 23 Python
Python gevent协程切换实现详解
Sep 14 Python
Python序列化模块JSON与Pickle
Jun 05 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
提取HTML标签
2006/10/09 PHP
ASP和PHP都是可以删除自身的
2007/04/09 PHP
PHP中用hash实现的数组
2011/07/17 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
2012/07/02 PHP
一个PHP二维数组排序的函数分享
2014/01/17 PHP
ThinkPHP模板判断输出Empty标签用法详解
2014/06/30 PHP
Yii中创建自己的Widget实例
2016/01/05 PHP
php强大的时间转换函数strtotime
2016/02/18 PHP
PHP并发场景的三种解决方案代码实例
2021/02/27 PHP
原型方法的不同写法居然会影响调试的解决方法
2007/03/08 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
node.js读取文件到字符串的方法
2015/06/29 Javascript
jQuery点击改变class并toggle及toggleClass()方法定义用法
2015/12/11 Javascript
JS组件Form表单验证神器BootstrapValidator
2016/01/26 Javascript
基于jQuery日历插件制作日历
2016/03/11 Javascript
Jquery ui datepicker设置日期范围,如只能隔3天【实现代码】
2016/05/04 Javascript
javascript类型系统——undefined和null全面了解
2016/07/13 Javascript
BootStrap Fileinput的使用教程
2016/12/30 Javascript
bootstrap PrintThis打印插件使用详解
2017/02/20 Javascript
JavaScript实现获取远程的html到当前页面中
2017/03/26 Javascript
React/Redux应用使用Async/Await的方法
2017/11/16 Javascript
js实时监控文本框输入字数的实例代码
2018/01/18 Javascript
Bootstarp在pycharm中的安装及简单的使用方法
2019/04/19 Javascript
layui实现下拉框三级联动
2019/07/26 Javascript
常用python数据类型转换函数总结
2014/03/11 Python
解决python3在anaconda下安装caffe失败的问题
2017/06/15 Python
Python实现的redis分布式锁功能示例
2018/05/29 Python
中邮全球便购:中国邮政速递物流
2017/03/04 全球购物
Sahajan美国:阿育吠陀护肤品牌
2021/01/09 全球购物
C#公司笔试题
2014/03/28 面试题
个人党性剖析材料
2014/02/03 职场文书
委托书范文
2014/04/02 职场文书
母校寄语大全
2014/04/10 职场文书
2014年公路养护工作总结
2014/12/04 职场文书
2015年乡镇卫生院妇幼保健工作总结
2015/05/19 职场文书
为什么代码规范要求SQL语句不要过多的join
2021/06/23 MySQL