Django Admin定制:显示字段与模型优化实践

1 下载量 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管理用户表,可以轻松地进行用户的创建、编辑和删除等操作,使得数据库管理变得更加便捷。