Django admin后台修改展示分组
在开发web应用的过程中,经常会使用Django框架来进行快速开发。而Django admin后台是管理网站内容的重要工具之一。在默认情况下,Django admin后台会将所有的模型都显示在一个列表中,对于一些大型的项目来说,这样的展示方式可能不够友好。本文将介绍如何在Django admin后台中修改展示分组,以便更好地管理和展示模型数据。
创建Django项目
首先,我们需要创建一个Django项目。假设我们的项目名为myproject
,我们可以通过以下命令来创建一个新的Django项目:
django-admin startproject myproject
然后进入项目目录并创建一个新的Django应用:
cd myproject
python manage.py startapp myapp
在myapp
应用中定义一个简单的模型用于演示:
# myapp/models.py
from django.db import models
class Category(models.Model):
name = models.CharField(max_length=50)
def __str__(self):
return self.name
class Product(models.Model):
name = models.CharField(max_length=100)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
def __str__(self):
return self.name
然后将myapp
应用添加到INSTALLED_APPS
中:
# myproject/settings.py
INSTALLED_APPS = [
...
'myapp',
]
运行迁移以创建相应的表:
python manage.py makemigrations
python manage.py migrate
在Django admin中修改展示分组
默认情况下,Django admin会将所有的模型都显示在一个列表中。我们可以通过自定义ModelAdmin
类来修改展示分组。
首先在myapp
应用中创建一个admin.py
文件,并注册模型:
# myapp/admin.py
from django.contrib import admin
from myapp.models import Category, Product
@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
pass
@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
pass
运行项目并登录到Django admin后台(假设用户名和密码均为admin
),可以看到Category
和Product
模型分别显示在两个不同的表格中。
接下来,我们将演示如何将Product
模型中的数据按照Category
进行分组展示。
# myapp/admin.py
from django.contrib import admin
from myapp.models import Category, Product
@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
pass
class ProductInline(admin.TabularInline):
model = Product
extra = 0
@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
inlines = [ProductInline]
重新登录到Django admin后台,可以看到Product
模型中的数据已经按照Category
进行了分组展示。
这样,我们就成功地修改了Django admin后台中的展示分组。
总结
本文介绍了如何在Django admin后台中修改展示分组,以便更好地管理和展示模型数据。通过自定义ModelAdmin
类和InlineModelAdmin
类,我们可以灵活地控制Django admin后台中模型数据的展示方式。