Django Admin定制:显示模型字段详解

0 下载量 18 浏览量 更新于2024-08-28 收藏 175KB PDF 举报
"django admin后管定制-显示字段的实例" 在Django框架中,内置的admin后台管理系统是一个非常实用的功能,允许开发者快速地对数据库模型进行增删改查等操作。然而,当直接注册模型到admin后台时,系统默认只会显示每个记录的基本信息,如模型对象,这往往不够直观。本实例将教你如何定制Django admin,以便在列表视图中显示更丰富的字段信息,提高管理效率。 首先,需求是使admin界面更加友好,能够一眼看出每条记录的关键信息,而不仅仅是"model object"。要做到这一点,你需要在`admin.py`文件中创建一个自定义的`ModelAdmin`类,并指定`list_display`属性。例如,对于`Underwriter`模型,可以在`UnderwriterAdmin`类中设置`list_display`为('id', 'underwriter', 'shortname', 'telephone'),这样在admin列表视图中就会显示这些字段。 ```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') admin.site.register(Underwriter, UnderwriterAdmin) ``` `list_display_links`属性则用于设置哪些字段可以被点击,进入编辑页面,默认是第一个字段,这里将其设置为'id'和'underwriter'。 在未进行自定义之前,admin界面显示`model object`是因为在模型类中没有定义`__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): return self.underwriter ``` 或在Python 3中: ```python def __str__(self): return self.underwriter ``` 此外,Django还允许你自定义其他诸多功能,比如排序、过滤、搜索等,以满足更多复杂的管理需求。自定义用户表是另一个常见需求,当你需要扩展默认的User模型字段时,可以通过继承`AbstractBaseUser`和`PermissionsMixin`来创建自定义用户模型,然后配置AUTH_USER_MODEL设置,从而实现对用户表的完全控制。 Django admin的自定义功能强大且灵活,通过适当的配置,可以极大地提升后台管理体验,使得数据操作更加直观和便捷。