django设置admin的排列顺序,耗3小时【躲坑指南】

django 项目中,这个数据栏目的显示排列顺序我希望更贴近业务

比如要让【商品货品信息】中的9个数据表根据人为规定来进行排序
结果:工程量很大。
能够实现人为的自定义排序

在这里插入图片描述
最简单的设置就是给模型添加号数标记
在这里插入图片描述

主应用中创建admin–设置了其中一个应用的模型

如果要修改admin的排列顺序,如果仅仅写了一个模型的顺序,那么它仅仅会显示这个模型,而其他模型不显示,所以需要重写所有的排列顺序

这个主应用中需要把所有模型都进行配置后,才能够有一个自定义的排列顺序
在这里插入图片描述

配置了这个模型的单独排列顺序

/home/luichun/lc/Pyfile/Pywebback/app/shangpin/admin.py

from django.contrib import admin# Register your models here.
# --------------【添加配置 admin 中各个模型表排列顺序1】
from django.contrib.admin import AdminSite
from django.utils.text import capfirst
from django.apps import apps
# --------------【添加配置 admin 中各个模型表排列顺序2】# /home/luichun/lc/Pyfile/Pywebback/app/shangpin/admin.py
# from django.contrib import admin
from .admins.goods import ProductAdmin, CategoryAdmin, BrandAdmin
from .admins.good_sales_quantity import SalesQuantityAdmin
from .admins.goods_carousel_image import ProductCarouselImageAdmin
from .admins.goods_detail_image import ProductDetailImageAdmin
from .admins.goods_guige import SpecificationFreightAdmin
from .admins.goods_video import AudioFileAdmin# 收款账户
from .admins.receiving_account import PaymentAccountAdminfrom .model import (Product, Category, Brand, SalesQuantity, ProductCarouselImage,ProductDetailImage, SpecificationFreight, AudioFile,PaymentAccount,
)# # --------------【添加配置 admin 中各个模型表排列顺序2】# class ShangpinAdminSite(AdminSite):
#     def get_app_list(self, request):
#         # 获取所有应用的信息
#         app_dict = self._build_app_dict(request)
#         # 只保留"shangpin"应用
#         app_list = [app for app in app_dict.values() if app['app_label'] == 'shangpin']
#         if app_list:
#             app = app_list[0]
#             # 定义模型的自定义顺序
#             model_order = {
#                 '商品': 1,
#                 '分类': 2,
#                 '品牌': 3,
#                 '商品视频列表': 4,
#                 '商品详情图片': 5,
#                 '商品轮播图片': 6,
#                 '商品销售数量': 7,
#                 '商品长宽高与运费': 8,
#                 '收款账户': 9,
#             }
#             # 根据model_order对模型进行排序,未指定的模型排在最后
#             app['models'].sort(key=lambda x: model_order.get(x['name'], 999))
#         return app_list# # 创建自定义AdminSite实例
# shangpin_admin_site = ShangpinAdminSite(name='shangpin_admin')
# # shangpin_admin_site = admin.AdminSite(name='shangpin_admin')
# # --------------【添加配置 admin 中各个模型表排列顺序2】# --------------【添加配置 admin 中各个模型表排列顺序2】
# 自定义 AdminSite 类
class CustomAdminSite(admin.AdminSite):def get_app_list(self, request):app_dict = self._build_app_dict(request)app_list = sorted(app_dict.values(), key=lambda x: x['name'].lower())# 自定义 'shangpin' 应用的模型顺序for app in app_list:if app['app_label'] == 'shangpin':model_order = {'商品': 1,'分类': 2,'品牌': 3,'商品视频列表': 4,'商品详情图片': 5,'商品轮播图片': 6,'商品销售数量': 7,'商品长宽高与运费': 8,'收款账户': 9,}app['models'].sort(key=lambda x: model_order.get(x['name'], 999))return app_list# 替换默认的 admin.site
admin.site = CustomAdminSite()# --------------【添加配置 admin 中各个模型表排列顺序2】# ---这个将会注册到admin
# 注册模型及其对应的 Admin 类
# http://127.0.0.1:10005/admin/ 页面中显示出的栏目
admin.site.register(Product, ProductAdmin)
admin.site.register(Category, CategoryAdmin)
admin.site.register(Brand, BrandAdmin)
admin.site.register(SalesQuantity, SalesQuantityAdmin)
admin.site.register(ProductCarouselImage, ProductCarouselImageAdmin)
admin.site.register(ProductDetailImage, ProductDetailImageAdmin)
admin.site.register(SpecificationFreight, SpecificationFreightAdmin)
admin.site.register(AudioFile, AudioFileAdmin)
admin.site.register(PaymentAccount, PaymentAccountAdmin)# --- 使用自定义的admin中展示的排列顺序
# --------------【添加配置 admin 中各个模型表排列顺序3】
# 注册模型及其对应的 Admin 类到自定义的AdminSite
# http://127.0.0.1:10005/admin/shangpin/ 页面中显示出的栏目
# shangpin_admin_site.register(Product, ProductAdmin)
# shangpin_admin_site.register(Category, CategoryAdmin)
# shangpin_admin_site.register(Brand, BrandAdmin)
# shangpin_admin_site.register(SalesQuantity, SalesQuantityAdmin)
# shangpin_admin_site.register(ProductCarouselImage, ProductCarouselImageAdmin)
# shangpin_admin_site.register(ProductDetailImage, ProductDetailImageAdmin)
# shangpin_admin_site.register(SpecificationFreight, SpecificationFreightAdmin)
# shangpin_admin_site.register(AudioFile, AudioFileAdmin)
# shangpin_admin_site.register(PaymentAccount, PaymentAccountAdmin)
# --------------【添加配置 admin 中各个模型表排列顺序3】

配置了url的路由


# --------------【添加配置 admin 中各个模型表排列顺序4】
from shangpin.admin import shangpin_admin_site
# --------------【添加配置 admin 中各个模型表排列顺序4】urlpatterns = [# --------------【添加配置 admin 中各个模型表排列顺序5】# 必须排在 admin/ 之前,因为回根据这里的排序进行逻辑判断分配处理# path('admin/shangpin/', shangpin_admin_site.urls),  # "shangpin"应用的自定义AdminSite# --------------【添加配置 admin 中各个模型表排列顺序5】path('admin/', admin.site.urls),# 当用户访问/admin/路径时,显示Django的管理后台界面。# 将所有以api/开头的URL请求转发给router处理path('api2/', include(router.urls)),path('ckeditor/', include('ckeditor_uploader.urls')),# 当用户访问/ckeditor/路径时,会使用ckeditor_uploader应用中的URL配置。# 这个是在django-admin后台中进行编辑时需要的路径re_path(r'media/(?P<path>.*)', serve, {"document_root": settings.MEDIA_ROOT}),# static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)# 使用static函数来配置静态文件的URL路径。在开发环境中,这个配置会将MEDIA_URL路径映射到MEDIA_ROOT目录,用于处理媒体文件的访问。# wenzhang app中的应用urlpath('', include('wenzhang.urls')),#文章应用 使用api方式传递数据# path('', include('home.urls')),#主页 使用mtv方式返回页面path('yinyue/', include('yinyue.urls')),#主页 使用mtv方式返回页面# yuyin 应用# path('yuyin/', include('yuyin.urls')),]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/37542.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

macOS使用brew切换Python版本【超详细图解】

目录 一、更新Homebrew仓库 二、安装pyenv 三、将pyenv添加到bash_profile文件中 四、使.bash_profile文件的更改生效 五、安装需要的Python版本 六、设置全局使用的Python版本 七、检查Python版本是否切换成功 pyenv常用命令 一、更新Homebrew仓库 brew update 这个…

【深度学习新浪潮】AI ISP技术与手机厂商演进历史

本文是关于AI ISP(人工智能图像信号处理器)的技术解析、与传统ISP(图像信号处理器)的区别、近三年研究进展,以及各大手机厂商在该领域演进历史的详细报告。本报告综合多个权威来源的信息,力求全面、深入地呈现相关技术发展脉络与行业动态。 第一部分:AI ISP的定义及与传…

如何让节卡机器人精准对点?

如何让节卡机器人精准对点&#xff1f; JAKA Zu 软件主界面主要由功能栏、开关栏、菜单栏构成。 菜单栏&#xff1a;控制柜管理&#xff0c;机器人管理与软件管理组成。主要功能为对控制柜关机、APP 设置、机器人本体设 置、控制柜设置、连接机器人和机器人显示等功能。 开关…

QAI AppBuilder 快速上手(7):目标检测应用实例

YOLOv8_det是YOLO 系列目标检测模型&#xff0c;专为高效、准确地检测图像中的物体而设计。该模型通过引入新的功能和改进点&#xff0c;如因式分解卷积&#xff08;factorized convolutions&#xff09;和批量归一化&#xff08;batch normalization&#xff09;&#xff0c;在…

c#难点整理

1.何为托管代码&#xff0c;何为非托管代码 托管代码就是.net框架下的代码 非托管代码&#xff0c;就是非.net框架下的代码 2.委托的关键知识点 将方法作为参数进行传递 3.多维数组 4.锯齿数组 5.多播委托的使用 6.is运算符 相当于逻辑运算符是 7.as 起到转换的作用 8.可…

二次向用户申请授权

HarmonyOS 5.0.3(15) 版本的配套文档&#xff0c;该版本API能力级别为API 15 Release 文章目录 当应用通过requestPermissionsFromUser()拉起弹框请求用户授权时&#xff0c;用户拒绝授权。应用将无法再次通过requestPermissionsFromUser()拉起弹框&#xff0c;需要用户在系统应…

JetsonNano —— 4、Windows下对JetsonNano板卡烧录刷机Ubuntu20.04版本(官方教程)

介绍 NVIDIA Jetson Nano™ 开发者套件是一款面向创客、学习者和开发人员的小型 AI 计算机。按照这个简短的指南&#xff0c;你就可以开始构建实用的 AI 应用程序、酷炫的 AI 机器人等了。 烧录刷机 1、下载 Jetson Nano开发者套件SD卡映像 解压出.img文件并记下它在计算机上的…

Chapter 8 Charge Pump

Chapter 8 Charge Pump 8.1 Introduction 电荷泵就是capacitive DC–DC converters, 一般把小功率bias generation叫做电荷泵, 传输大功率的称为switched-capacitor DC–DC converters. 但其实两者都是通过电容网络的charge redistribution, 来实现电压的倍增或者倍降. 8.1.…

计算机网络——通信基础和传输介质

物理层任务&#xff1a;实现相邻节点之间比特&#xff08;0或1&#xff09;的传输 到了数据链路层之后&#xff0c;它会以帧为单位&#xff0c;把若干个比特交给物理层&#xff0c;物理层需要把这些比特信息转化成信号&#xff0c;在物理传输媒体上进行传输 通信基础基本概念 信…

【架构】单体架构 vs 微服务架构:如何选择最适合你的技术方案?

文章目录 ⭐前言⭐一、架构设计的本质差异&#x1f31f;1、代码与数据结构的对比&#x1f31f;2、技术栈的灵活性 ⭐二、开发与维护的成本博弈&#x1f31f;1、开发效率的阶段性差异&#x1f31f;2、维护成本的隐形陷阱 ⭐三、部署与扩展的实战策略&#x1f31f;1、部署模式的本…

Java-SpringBootWeb入门、Spring官方脚手架连接不上解决方法

一. Spring 官网&#xff1a;Spring | Home Spring发展到今天已经形成了一种开发生态圈&#xff0c;Spring提供了若干个子项目&#xff0c;每个项目用于完成特定的功能(Spring全家桶) Spring Boot可以帮助我们非常快速的构建应用程序、简化开发、提高效率 。 二. Spring Boot入…

springboot整合redis

创建springboot整合redis工程&#xff1a; 一、springboot整合redis步骤 首先我们要知道什么是redis&#xff1a; 三步骤完成springboot对redis数据库的整合&#xff1a; 1、导入springboot整合redis坐标&#xff08;上面勾选的那个就是&#xff09; 2、在yml配置文件中配置re…

图解AUTOSAR_CP_EEPROM_Abstraction

AUTOSAR EEPROM抽象模块详细说明 基于AUTOSAR标准的EEPROM抽象层技术解析 目录 1. 概述 1.1 核心功能1.2 模块地位2. 架构概览 2.1 架构层次2.2 模块交互3. 配置结构 3.1 主要配置容器3.2 关键配置参数4. 状态管理 4.1 基本状态4.2 状态转换5. 接口设计 5.1 主要接口分类5.2 接…

【AI Infra】【RLHF框架】二、VeRL中colocate实现解析

​ colocate的作用是使多个Worker共享相同的资源池。当然&#xff0c;目前verl中所有模型的Worker都共享相同的资源池:global_pool。这篇博客主要通过例子和源代码理解verl中colocate的实现&#xff0c;需要一些前置知识。建议先阅读 【AI Infra】【RLHF框架】一、VeRL中基于R…

PostgreSQL_数据表结构设计并创建

目录 前置&#xff1a; 1 数据表设计思路 2 数据表格SQL 3 创建 3.1 创建数据库 db_stock 3.2 在 pgAdmin4 中创建表 前置&#xff1a; 本博文是一个系列。在本人“数据库专栏”-》“PostgreSQL_”开头的博文 1 数据表设计思路 1 日数据来自优矿&#xff0c;优矿的数据…

植物来源药用天然产物的合成生物学研究进展-文献精读121

植物来源药用天然产物的合成生物学研究进展 摘要 大多数药用天然产物在植物中含量低微&#xff0c;提取分离困难&#xff1b;而且这些化合物一般结构复杂&#xff0c;化学合成难度大&#xff0c;还容易造成环境污染。基于合成生物学技术获得药用天然产物具有绿色环保和可持续发…

Nordic nRF 蓝牙的 Direct Test Mode (DTM) 测试介绍

目录 概述 1. 核心物理层参数 1.1 射频频率 (RF Channel Frequency) 1.2 发射功率 (TX Power) 1.3 调制方式 (Modulation) 1.4 数据包类型 (Packet Type) 1.5 测试模式 (Test Mode) 2. 参数配置方法 2.1 通过 HCI 命令配置 2.2 示例&#xff08;nRF52 系列&#xff0…

区间震荡指标

区间震荡指标的逻辑如下&#xff1a; 一、函数注解 1. Summation函数 功能&#xff1a; 计算给定价格序列Price的前Length个数据点的和&#xff0c;或在数据点数量超过Length时&#xff0c;计算滚动窗口内的价格和。 参数&#xff1a; Price(1)&#xff1a;价格序列&#…

文章防洗稿隐蔽混淆软件

如果你的文章经常被人洗稿搬运&#xff0c;那么这个小工具或许可以帮到你 基本原理: 在文章的每个字后面&#xff0c;加上一些随机的隐藏字符 人眼看不到&#xff0c;但是机器会读取到&#xff0c;如果别人是用AI工具来对你的文章进行洗稿&#xff0c;就会发现这是一堆乱码 你…

车载软件架构 --- AUTOSAR AP/CP中诊断的区别

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 周末洗了一个澡&#xff0c;换了一身衣服&#xff0c;出了门却不知道去哪儿&#xff0c;不知道去找谁&am…