Admin 管理工具
- Django 提供了内置的 Web 管理工具,用于管理数据库中的数据。
- 是 django.contrib 中的一部分,可以在项目的
settings.py
中的INSTALLED_APP
中看到。
1 | INSTALLED_APPS = ( |
使用
- 启动 Django 项目
- 访问
http://127.0.0.1:8000/admin/
,输入用户名和密码,进入管理页面。
1 | # 可以通过命令 py manage.py createsuperuser 创建超级用户 |
- 创建模型类 - app01 中使用的模型
- 注册模型类 - 在 app01/admin.py 中注册模型
1 | from django.contrib import admin |
- 再次访问
http://127.0.0.1:8000/admin/
,即可看到 Test 模型的数据表
复杂模型
管理页面非常强大,可以处理非常复杂的模型数据。
- 先在 app01/models.py 中创建一个复杂模型
1 | from django.db import models |
- 上述代码中有两个表,Tag以Contact为外键,一个Contact可以对应多个Tag
- IntegerField用于存储整数
- 在 app01/admin.py 中注册模型
1 | from django.contrib import admin |
- 再次访问
http://127.0.0.1:8000/admin/
,即可看到 Test 模型的数据表 - 如果未创建表结构,可以通过以下命令创建
1 | py manage.py makemigrations [appname] |
自定义表单
- 默认情况下,管理页面使用 Django 的表单,可以自定义表单。
- 修改 app01/admin.py
1 | from django.contrib import admin |
- 再次访问
http://127.0.0.1:8000/admin/
,即可看到 Contact 的 add 页面,只有 name 和 email 字段 - 也可以将输入栏分块,每个栏可以定义自己的格式
1 | from django.contrib import admin |
内联(Inline)显示
- 上面的 Contact 是 Tag 的外部键,所以有外部参考的关系
- 在默认的页面中,两者被分离,无法体现出两者的从属关系,可以通过内联显示来解决这个问题
- 修改 app01/admin.py
1 | from django.contrib import admin |
列表页的显示
- 也可以自定义该页面的显示,比如在列表中显示更多的栏目,只需要在 ContactAdmin 中增加 list_display 属性即可
1 | from django.contrib import admin |
- 搜索功能的添加
1 | from django.contrib import admin |
注意
- on_delete 有
CASCADE/PROTECT/SET_NULL/SET_DEFAULT/SET
五个可选值- CASCADE:级联删除
- PROTECT:抛出 ProtectedError 异常
- SET_NULL:将外键字段设为 null,前提是该字段允许为 null
- SET_DEFAULT:将外键字段设为默认值
- SET:将外键字段设为指定值,指定值由参数指定,可以是一个函数,一般情况下使用 CASCADE 就可以