Django Admin:如何自定义app中模型显示顺序

2024-08-1918:45:55后端程序开发Comments948 views字数 1594阅读模式

Django Admin中,模型的顺序默认是安装名称进行排序的,如下图:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/64979.html

Django Admin:如何自定义app中模型显示顺序如果想自定义app中模型显示顺序,可以有如下方法:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/64979.html

方法1-模型名称添加序号#

当然这是最简单的一种方法,我们可以在模型内部的Meta类中通过verbose_name_plural来定制模型的显示顺序,如下图:
Django Admin:如何自定义app中模型显示顺序文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/64979.html

当然这不够优雅,在某些列表页也会显示这个序号。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/64979.html

方法2-使用插件django-admin-model-list-order#

参考:https://github.com/Vikrant-Arya/django-admin-model-list-order文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/64979.html

  1. 安装插件:pip install django-admin-model-list-order
  2. 在settings.py中配置插件、中间件及默认序号
# settings.py...
INSTALLED_APPS = (    ...    'admin_model_list_order',    ...)
MIDDLEWARE_CLASSES = (    ...    'admin_model_list_order.middleware.AdminModelListOrder',    ...)
ADMIN_MODEL_DEFAULT_PRIORITY = 100
  1. 在模型Admin模型中使admin_order制定顺序,如下图:
    Django Admin:如何自定义app中模型显示顺序

app_list是Django管理界面首页中显示的应用程序列表。每个应用程序在app_list中都以一个按钮或链接的形式显示,并且可以点击来访问该应用程序的管理界面。默认情况下,Django会自动根据项目中的每个应用程序生成对应的app_list。然而,在某些情况下,我们可能需要自定义app_list的内容和显示方式。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/64979.html

以通过重写AdminSite类中的get_app_list方法来定义自定义的app_list。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/64979.html

首先,需要创建一个自定义的AdminSite子类,并重写get_app_list方法。假设要将某些应用程序添加到app_list中,可以按照以下步骤进行操作:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/64979.html

from django.contrib.admin import AdminSitefrom django.utils.text import capfirst
class CustomAdminSite(AdminSite):    def get_app_list(self, request):        app_list = super().get_app_list(request)
        # 添加自定义应用程序到app_list中        app_list.append({            'name': 'Custom App',            'app_label': 'custom_app',            'app_url': '/custom_app/',            'models': [],        })
        # 对app_list进行排序        app_list.sort(key=lambda x: x['name'])
        return app_list
# 将自定义的AdminSite注册到Django中custom_site = CustomAdminSite(name='custom_admin')

get_app_list方法中,调用父类的get_app_list方法获取默认的app_list。然后添加了一个自定义应用程序到app_list中,以字典的形式提供了应用程序的名称、标签、URL和模型列表,对app_list进行了排序,并返回了最终的app_list。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/64979.html

最后需要将自定义的AdminSite注册到Django中。在项目的urls.py文件中添加以下代码:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/64979.html

from django.contrib import adminfrom myproject.admin import custom_site
urlpatterns = [    path('admin/', admin.site.urls),    path('custom_admin/', custom_site.urls),]
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/64979.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/bc/64979.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定