Django后台管理复杂模型

【图书介绍】《Django 5企业级Web应用开发实战(视频教学版)》_django 5企业级web应用开发实战(视频教学版)-CSDN博客

《Django 5企业级Web应用开发实战(视频教学版)》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com)

Django框架创建后台管理员账户-CSDN博客

在Django后台管理模块中,使用admin.site.register()注册方式还可以管理更加复杂的自定义模型。下面,我们在7.3节实例的基础上稍加修改,完成一个复杂模型的后台管理(Admin)应用测试。

首先,在userinfo应用下新创建一个模型Dep,仅包括一个简单的名称(name)字段。然后,修改一下模型Person,新建一个模型Dep的外键(dep)字段,具体代码如下:

【代码7-3】(详见源代码MyAdminSite项目的userinfo/models.py文件)

复制代码
01  from django.db import models
02  
03  # 在此处创建模型
04  
05  # Model Dep(Department)
06  class Dep(models.Model):
07      name = models.CharField(max_length=16)
08  
09      def __str__(self):
10          return self.name
11  
12  # Model Person
13  class Person(models.Model):
14      name = models.CharField(max_length=32)
15      age = models.IntegerField(default=0)
16      dep = models.ForeignKey(Dep, on_delete=models.CASCADE,)
17  
18      def __str__(self):
19          return self.name

【代码分析】

在第01行代码中,通过import关键字引入models模块。

在第06~10行代码中,创建了一个模型Dep,继承自models.Model模型类,详细说明如下:

  • 在第07行代码中,创建了一个CharField类型的name字段属性。

在第13~19行代码中,创建了一个模型Person,继承自models.Model模型类,详细说明如下:

  • 在第14行代码中,创建了一个CharField类型的name字段属性。
  • 在第15行代码中,创建了一个IntegerField类型的age字段属性,默认值为0。
  • 在第16行代码中,创建了一个ForeignKey外键,外键类型定义为模型(Dep)。注意,on_delete属性必须定义,这是Django 3.0+版本新增的规范。

通过后台管理界面管理该复杂模型,还是要使用admin.site.register()方法将数据模型注册到后台管理模块中,具体代码如下:

【代码7-4】(详见源代码MyAdminSite项目的userinfo/admin.py文件)

复制代码
01  from django.contrib import admin
02  from .models import Dep, Person
03  
04  # 在此处注册模型
05  admin.site.register([Dep, Person])

【代码分析】

在第01行代码中,通过import关键字引入admin模块。

在第02行代码中,通过import关键字从模型中引入了Dep和Person模型。

在第05行代码中,通过调用admin.site.register()方法同时完成将Dep和Person模型注册到后台管理模块的操作。

最后,刷新一下浏览器中的后台管理界面,具体页面效果如图7.10所示,后台管理模块界面中添加了刚刚创建的模型Dep。

图7.10 管理复杂模型

为了更好地演示界面效果,可以通过Python交互界面在模型Dep和模型Person中添加一些用户数据,具体代码如下:

复制代码
>>>from userinfo.models import Dep, Person
>>>dep=Dep(name='IT')
>>>dep.save()
>>>p=Person(name='cici',age=7,dep=dep)
>>>p.save()

返回图7.10中的Dep和Person模型,分别单击该链接会跳转到相应数据表的可编辑页面,效果如图7.11和图7.12所示,刚刚添加的用户数据已经在页面上显示出来了。

我们可以尝试单击图7.12中的用户信息cici链接,会跳转到该条用户信息的可编辑页面。效果如图7.13中的箭头和标识所示,在该条Person模型的用户信息中,可以清楚地查看到Dep模型类型的外键。

图7.11 Dep模型可编辑页面效果

图7.12 Person模型可编辑页面效果

图7.13 用户信息可编辑页面效果

相关推荐
错把套路当深情15 分钟前
Kotlin保留小数位的三种方法
开发语言·python·kotlin
错把套路当深情15 分钟前
Kotlin基础类型扩展函数使用指南
python·微信·kotlin
千里码aicood19 分钟前
python+vue旅游购票管理系统设计(源码+文档+调试+基础修改+答疑)
vue.js·python·旅游
B站_计算机毕业设计之家26 分钟前
python电商商品评论数据分析可视化系统 爬虫 数据采集 Flask框架 NLP情感分析 LDA主题分析 Bayes评论分类(源码) ✅
大数据·hadoop·爬虫·python·算法·数据分析·1024程序员节
写代码的安徒生30 分钟前
调用 Google Veo 3.1 API 批量制作电商产品 UGC 视频
python·音视频
赵谨言1 小时前
基于Python Web的大数据系统监控平台的设计与实现
大数据·开发语言·经验分享·python
武子康2 小时前
大数据-139 ClickHouse MergeTree 最佳实践:Replacing 去重、Summing 求和、分区设计与物化视图替代方案
大数据·后端·nosql
合作小小程序员小小店2 小时前
web网页,在线%抖音,舆情%分析系统demo,基于python+web+echart+nlp+知识图谱,数据库mysql
数据库·python·自然语言处理·flask·nlp·echarts·知识图谱
麦麦在写代码2 小时前
python2
python
该用户已不存在2 小时前
7个让全栈开发效率起飞的 Bun 工作流
前端·javascript·后端