Django Admin定制:显示字段与模型优化实践
183 浏览量
更新于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 上传
2019-05-09 上传
2024-09-07 上传
2024-06-27 上传
2023-05-26 上传
2024-09-07 上传
2024-11-13 上传
2024-11-04 上传
weixin_38543950
- 粉丝: 6
- 资源: 874
最新资源
- jsts-engine:内插JavaScript模板字符串
- 公司网站模版
- Blogpost-Backend-Project:具有2个或3个数据库模型(表)的Express API。 您的表之间必须有关系。 您至少应在1个模型上拥有完整的CRUD。 您的服务器应具有执行逻辑并返回JSON数据的RESTful路由。 如果时间允许,可以使用Express视图或React的前端UI。 例子
- Python_Utilities_Zoo:一些Python实用程序脚本
- ldd:编程接口到ldd
- 抓取:Api Rest para抓取自动零售
- ANNOgesic-1.0.10-py3-none-any.whl.zip
- microservices-on-rkt:实施 https
- project_test2:用于测试
- TomPlayer-开源
- mtdtag:代谢物数据汇总器
- 新桥深基坑支护方案(正式)封面及目录.zip
- helloworld-maven
- axe-con-react-tester
- 超级卡萨
- kgraphics.py