Django Admin定制:显示字段与模型优化实践
105 浏览量
更新于2024-09-07
收藏 172KB PDF 举报
"django admin后管定制-显示字段的实例"
在Django框架中,内置的admin后台管理系统提供了方便的数据管理功能。然而,如果只是简单地注册模型到admin,其默认展示的信息可能并不全面,通常只显示模型对象的类型(如ModelObject)。为了使admin界面更加友好和实用,我们需要对其进行定制,特别是对于显示字段的调整。本实例将介绍如何在Django admin中自定义显示字段,以便更直观地查看和管理数据。
首先,我们来看一个具体的需求:在admin后台中,不仅需要看到模型的ID,还希望能显示其他关键信息,如承销商的名称、简称和电话。默认情况下,这些信息并不会直接显示,需要点击每个记录才能查看。为了解决这个问题,我们可以创建一个自定义的admin模型类,并在其中定义`list_display`、`list_display_links`等属性。
1. 显示关键信息:
定义一个名为`UnderwriterAdmin`的`ModelAdmin`子类,将需要在列表视图中显示的字段(如id、underwriter、shortname和telephone)添加到`list_display`列表中。这样,当我们在admin界面查看Underwriter模型时,就会看到这些字段的数据。
2. 配置:
在`admin.py`文件中,我们需要导入`Underwriter`模型和`admin.ModelAdmin`,然后创建`UnderwriterAdmin`类并进行如下配置:
```python
from django.contrib import admin
from .models import Underwriter
class UnderwriterAdmin(admin.ModelAdmin):
list_display = ('id', 'underwriter', 'shortname', 'telephone')
list_display_links = ('id', 'underwriter')
# 注册Underwriter模型到admin,使用UnderwriterAdmin作为管理器
admin.site.register(Underwriter, UnderwriterAdmin)
```
3. 答疑:
当我们没有自定义`__unicode__`或`__str__`方法时,Django会默认显示模型对象的内存地址,即以`modelobject`的形式呈现。为了改变这一情况,我们需要在模型类中定义`__unicode__`方法(在Python 3中是`__str__`),返回一个代表模型实例的字符串。例如,返回承销商的`underwriter`字段值:
```python
class Underwriter(models.Model):
underwriter = models.CharField(max_length=50)
shortname = models.CharField(max_length=50)
telephone = models.CharField(max_length=50)
email = models.CharField(max_length=50, null=True, blank=True)
def __unicode__(self): # 或者在Python 3中使用 __str__
return self.underwriter
```
通过以上定制,我们可以在admin后台看到更直观、易读的Underwriter模型列表,提高了工作效率。此外,Django还允许我们进一步定制admin界面,比如自定义搜索字段、排序、过滤器等,以满足更多复杂的管理需求。
补充知识:在Django中,如果需要自定义用户表,可以创建一个继承自`AbstractBaseUser`的模型,然后替换默认的`User`模型。同时,通过admin管理用户表,可以轻松地进行用户的创建、编辑和删除等操作,使得数据库管理变得更加便捷。
2022-03-02 上传
2022-03-18 上传
2018-06-04 上传
2019-05-09 上传
点击了解资源详情
点击了解资源详情
2010-06-06 上传
2021-06-22 上传
2021-06-13 上传
weixin_38543950
- 粉丝: 6
- 资源: 874
最新资源
- 正整数数组验证库:确保值符合正整数规则
- 系统移植工具集:镜像、工具链及其他必备软件包
- 掌握JavaScript加密技术:客户端加密核心要点
- AWS环境下Java应用的构建与优化指南
- Grav插件动态调整上传图像大小提高性能
- InversifyJS示例应用:演示OOP与依赖注入
- Laravel与Workerman构建PHP WebSocket即时通讯解决方案
- 前端开发利器:SPRjs快速粘合JavaScript文件脚本
- Windows平台RNNoise演示及编译方法说明
- GitHub Action实现站点自动化部署到网格环境
- Delphi实现磁盘容量检测与柱状图展示
- 亲测可用的简易微信抽奖小程序源码分享
- 如何利用JD抢单助手提升秒杀成功率
- 快速部署WordPress:使用Docker和generator-docker-wordpress
- 探索多功能计算器:日志记录与数据转换能力
- WearableSensing: 使用Java连接Zephyr Bioharness数据到服务器