You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django Admin如何将多应用模型合并到单个‘Shop’分区?

如何将多Django应用的模型整合到Admin的同一分区

你遇到的问题是因为Django Admin默认按应用的app_label(默认等于应用名称)分组,即便多个应用设置了相同的verbose_name,不同app_label的应用仍会被拆分为独立分组。以下两种方法可以实现将所有模型整合到"Shop"分区的需求:

方法一:给ModelAdmin指定自定义app_label

这是最简单的实现方式,不需要修改Admin站点的核心逻辑,只需在每个应用的admin.py中注册模型时,为对应的ModelAdmin类设置app_label为"Shop"即可:

# orders/admin.py
from django.contrib import admin
from .models import Order

class OrderAdmin(admin.ModelAdmin):
    app_label = 'Shop'  # 指定统一的分组名称

admin.site.register(Order, OrderAdmin)

对baskets、products、offers应用的模型重复上述操作,所有模型就会统一显示在Admin后台的"Shop"分区下。

方法二:自定义AdminSite合并分组

如果需要更灵活的分组逻辑(比如后续要调整分组规则),可以自定义AdminSite并重写get_app_list方法,手动将多个应用的模型合并到同一分组:

  1. 在项目根目录创建admin.py,定义自定义AdminSite:
from django.contrib.admin import AdminSite
from django.contrib import admin

class ShopAdminSite(AdminSite):
    site_header = 'Shop 管理后台'

    def get_app_list(self, request):
        # 获取默认的应用列表
        app_list = super().get_app_list(request)
        shop_models = []
        # 收集目标应用的所有模型
        target_apps = ['orders', 'baskets', 'products', 'offers']
        # 遍历并移除原有应用条目,收集模型
        for app in list(app_list):
            if app['app_label'] in target_apps:
                shop_models.extend(app['models'])
                app_list.remove(app)
        # 添加新的Shop分组
        app_list.append({
            'name': 'Shop',
            'app_label': 'Shop',
            'models': shop_models,
        })
        return app_list

# 实例化自定义站点
shop_admin_site = ShopAdminSite(name='shop_admin')
  1. 在自定义站点中注册所有模型:
# 继续在上述admin.py中添加
from orders.models import Order
from baskets.models import Basket
from products.models import Product
from offers.models import Offer

shop_admin_site.register(Order)
shop_admin_site.register(Basket)
shop_admin_site.register(Product)
shop_admin_site.register(Offer)
  1. 修改项目的urls.py,替换默认的admin路由:
from django.urls import path
from .admin import shop_admin_site

urlpatterns = [
    path('admin/', shop_admin_site.urls),
]

这样访问Admin后台时,所有目标模型就会统一展示在"Shop"分区下。

内容的提问来源于stack exchange,提问作者Kevin Renskers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 06:35:21