Django admin后台修改展示分组

Django admin后台修改展示分组

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),可以看到CategoryProduct模型分别显示在两个不同的表格中。

接下来,我们将演示如何将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后台中模型数据的展示方式。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程