Django Admin设置应用程序及模型顺序方法详解
作者:临渊 发布时间:2021-01-18 14:45:18
标签:Django,Admin,应用,程序,模型
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']])用来设置默认顺序。修改后效果如下。
来源:https://www.cnblogs.com/superhin/p/12192535.html


猜你喜欢
- 最近项目中遇见 Jquery Ajax 缓存问题,load出来的页面状态有时正常,有时不对,记录一下,希望对大家有帮助使用jquery里lo
- 文件目录的创建和删除package mainimport( "fmt" "os")func main
- 如下所示:# -*- coding: utf-8 -*-import sys, urllib, urllib2, jsoncity=urll
- K线图概念股市及期货市bai场中的K线图的du画法包含四个zhi数据,即开盘dao价、最高价、最低价zhuan、收盘价,所有的shuk线都是
- 语法结构: 1. Cast 语法结构:CAST ( expression AS data_type [ ( length ) ] ) 2.
- 最近博主在边学flask边写测试平台,碰到一个比较常用的场景如下图所示这里有一个输入框组,下拉菜单里面有3个选项,还有一个输入框,代码是用
- 一 异常处理1.什么是异常Error(错误)是系统中的错误,程序员是不能改变的和处理的,如系统崩溃,内存空间不足,方法调用栈溢等。遇到这样的
- 在mysql中查询5条不重复的数据,使用以下:SELECT * FROM `table` ORDER BY RAND() LIMIT 5就可
- deque 是 double-ended queue的缩写,类似于 list,不过提供了在两端插入和删除的操作。appendleft 在列表
- ajax编程获取Google的PageRank3(PR值)及所在目录,想给你的站增加Google PR查询的功能吗?如果你不会就看看本文吧,
- 最近工作需要用到序列匹配,检测相似性,不过有点复杂的是输入长度是不固定的,举例为:input_and_output = [1, 2,
- 本文为大家分享了Java基于MySQL实现学生管理系统,供大家参考,具体内容如下因为实验室要交作业然后就做了一个学生管理系统,贴个代码纪念一
- 前言因近期进行时间序列分析时遇到了数据预处理中的缺失值处理问题,其中日期缺失和填充在网上没有找到较好较全资料,耗费了我一晚上工作时间,所以下
- 关于Pillow与PILPIL(Python Imaging Library)是Python一个强大方便的图像处理库,名气也比较大。不过只支
- 什么是内存逃逸分析内存逃逸分析是go的编译器在编译期间,根据变量的类型和作用域,确定变量是堆上还是栈上简单说就是编译器在编译期间,对代码进行
- 在上一篇文章中,简单介绍了下闭包(closure)和原型链,现在继续来研究闭包的内部机制。对了,所有的东西都参考自这篇文章:Javascri
- 由于tornado内置的AsyncHTTPClient功能过于单一, 所以自己写了一个基于Tornado的HTTP客户端库, 鉴于自己多处使
- mysql 8.0.11 winx64安装教程记录如下,分享给大家1.进入地址: 下载mysql-8.0.11-winx642.解
- 下载中间件在每一个scrapy工程中都有一个名为 middlewares.py 的文件,这个就是中间件文件其中下载中间件的类为 XxxDow
- 吐槽一下企业微信的api文档真的不好读······企业微信本来是有功能,可以直接把图片显示到正文的,但是那个api我调用一直出错,各种折腾也