
Django
在Django框架中,Admin是一个非常强大和灵活的工具,用于管理和配置后台管理界面。在Admin中,我们可以将相关的字段分组成字段集,并使用折叠功能将其隐藏以便提高界面的整洁性和可读性。本文将介绍如何将折叠添加到字段集,并且使其在页面加载时就展开。
首先,我们需要定义一个模型,并在Admin中注册该模型。假设我们有一个简单的模型叫做"Product",其中包含了一些基本的字段,如名称、价格和描述。Python# models.pyfrom Django.db import modelsclass Product(models.Model): name = models.CharField(max_length=100) price = models.DecimalField(max_digits=10, decimal_places=2) description = models.TextField() def __str__(self): return self.name接下来,我们需要创建一个Admin类,并将模型注册到Admin中。在Admin类中,我们可以使用"fieldsets"属性来定义字段集,并使用折叠功能将其隐藏起来。
Python# admin.pyfrom Django.contrib import adminfrom .models import Productclass ProductAdmin(admin.ModelAdmin): fieldsets = ( ('基本信息', { 'fields': ('name', 'price') }), ('详细描述', { 'classes': ('collapse',), # 添加折叠功能 'fields': ('description',) }), )admin.site.register(Product, ProductAdmin)在上面的代码中,我们创建了两个字段集。第一个字段集名为"基本信息",包含了"name"和"price"字段。第二个字段集名为"详细描述",包含了"description"字段。通过给"详细描述"字段集的"class"属性添加"collapse"类,我们实现了将其折叠起来的效果。现在,当我们在Admin中查看"Product"模型的详细信息时,"详细描述"字段集将默认处于折叠状态。但是,我们希望它在页面加载时就展开。为了实现这个目标,我们需要在Admin类中添加一些自定义的JavaScript代码。Python# admin.pyfrom Django.contrib import adminfrom Django.forms import Mediafrom .models import Productclass ProductAdmin(admin.ModelAdmin): fieldsets = ( ('基本信息', { 'fields': ('name', 'price') }), ('详细描述', { 'classes': ('collapse',), # 添加折叠功能 'fields': ('description',) }), ) def get_form(self, request, obj=None, <strong>kwargs): form = super().get_form(request, obj=None, </strong>kwargs) form.media += Media( JS=('admin/JS/collapse.JS',) ) return formadmin.site.register(Product, ProductAdmin)在上述代码中,我们重写了"get_form"方法,并向表单的媒体资源中添加了一个JavaScript文件"collapse.JS"。这个JavaScript文件包含了一段自定义的代码,用于在页面加载时展开折叠的字段集。Javascript// collapse.JSdocument.addEventListener('DOMContentLoaded', function() { const fieldsets = document.getElementsByClassName('collapse'); for (let i = 0; i < fieldsets.length; i++) {</p> fieldsets[i].classList.remove('collapse'); }});在上面的代码中,我们使用JavaScript的"getElementByClassName"方法获取到所有具有"collapse"类的元素,然后使用"classList.remove"方法将"collapse"类移除,从而实现展开效果。案例代码:Python# models.pyfrom Django.db import modelsclass Product(models.Model): name = models.CharField(max_length=100) price = models.DecimalField(max_digits=10, decimal_places=2) description = models.TextField() def __str__(self): return self.name
Python# admin.pyfrom Django.contrib import adminfrom Django.forms import Mediafrom .models import Productclass ProductAdmin(admin.ModelAdmin): fieldsets = ( ('基本信息', { 'fields': ('name', 'price') }), ('详细描述', { 'classes': ('collapse',), # 添加折叠功能 'fields': ('description',) }), ) def get_form(self, request, obj=None, <strong>kwargs): form = super().get_form(request, obj=None, </strong>kwargs) form.media += Media( JS=('admin/JS/collapse.JS',) ) return formadmin.site.register(Product, ProductAdmin)Javascript// collapse.JSdocument.addEventListener('DOMContentLoaded', function() { const fieldsets = document.getElementsByClassName('collapse'); for (let i = 0; i < fieldsets.length; i++) {</p> fieldsets[i].classList.remove('collapse'); }});:通过以上步骤,我们成功地将折叠功能添加到字段集,并且使其在页面加载时就展开。这样可以提高Admin界面的可读性和整洁性。在实际的项目中,我们可以根据需要对字段集进行定制,并根据具体的业务逻辑进行扩展和修改。希望本文对你在使用Django Admin时有所帮助!Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号