Django模型入门

Django模型入门

为了能够学会使用Django模型,本节通过构建一个实际的Django模型来帮助读者尽快入门。

3.2.1  定义模型

既然Django模型实现了ORM功能,那么它就是对数据库实例的描述和实现。下面,我们通过一个简单的实例进行讲解。

如果需要设计实现一个简单的个人信息模型(名称为PersonInfo),我们一般会定义这个个人信息模型的模型名称、字段名称、字段类型等参数,如表3.1所示。

3.2.2  Django模型代码

根据表3.1中定义的模型数据,设计实现的Django模型代码如下:

【代码3-1】

01  from django.db import models
02  
03  class PersonInfo(models.Model):
04      name = models.CharField(max_length=30)
05      gender = models.CharField(max_length=16)
06      age = models.CharField(max_length=8)

【代码分析】

在第01行代码中,通过调用django.db模块导入了models对象(Django模型对象)。

第03~06行代码定义了一个PersonInfo类,并通过models对象调用CharField()方法定义了name(姓名)、gender(性别)和age(年龄)3个字段,且每个字段的长度不一。这3个字段(name、gender和age)都相当于类(PersonInfo)的属性。这个类属性其实就相当于实体数据库中的数据项(也称数据列)。

【代码3-1】所定义的Django模型,最终会在底层数据库中创建一张数据库表(Table),具体代码如下:

【代码3-2】

01  CREATE TABLE myapp_personinfo (
02      "id" serial NOT NULL PRIMARY KEY,
03      "name" varchar(32) NOT NULL,
04      "gender" varchar(16) NOT NULL
05      "age" varchar(8) NOT NULL
06  );

【代码分析】

在第01行代码中定义的表名称myapp_ personinfo是自动从某些模型元数据中派生出来,用户也可以自定义表名称。

在第02行代码中,id字段(索引)会被自动添加,这也是MySQL数据库自动生成的。

3.2.3  使用Django模型

定义好了Django模型,只有通知Django框架要使用该模型后,该模型才能够生效。具体方式是修改settings.py配置文件中的INSTALLED_APPS配置项,在该配置项中添加models.py文件中定义的Django模块名称。

下面举一个简单的配置例子。假如新建的Django模型位于项目中的myapp应用中,该myapp应用是通过django-admin manage.py startapp myapp命令创建的,则项目的settings.py配置文件中的INSTALLED_APPS配置项应该设置如下:

【代码3-3】

01  INSTALLED_APPS = [
02      #...
03      'myapp',		// 添加 'myapp' 应用
04      #...
05  ]

【代码分析】

在第03行代码中,myapp应用就是通过调用django-admin manage.py startapp myapp命令创建的。

文节选自《Django 5企业级Web应用开发实战(视频教学版)》,获出版社和作者授权发布。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/814276.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言-详解内存函数

文章目录 1.memcpy使用和模拟实现1.1 memcpy函数的使用规则1.2 memcpy函数的使用1.2 模拟实现memcpy函数 2.memmove 函数的使用和模拟实现2.1 memmove 函数使用规则2.2 memmove函数的使用2.3 模拟实现memmove函数2.3.1 从后往前移2.3.2 从前往后移 2.4 算法实现2.4.1 从前往后移…

机器学习之特征选择(Feature Selection)

1 引言 特征提取和特征选择作为机器学习的重点内容,可以将原始数据转换为更能代表预测模型的潜在问题和特征的过程,可以通过挑选最相关的特征,提取特征和创造特征来实现。要想学习特征选择必然要了解什么是特征提取和特征创造,得…

算法100例(持续更新)

算法100道经典例子,按算法与数据结构分类 1、祖玛游戏2、找下一个更大的值3、换根树状dp4、一笔画完所有边5、树状数组,数字1e9映射到下标1e56、最长回文子序列7、超级洗衣机,正负值传递次数8、Dijkstra9、背包问题,01背包和完全背…

React Hooks 全解: 常用 Hooks 及使用场景详解

React Hooks 是 React 16.8 版本引入的一项重要特性,它极大地简化和优化了函数组件的开发过程。 React 中常用的 10 个 Hooks,包括 useState、useEffect、useContext、useReducer、useCallback、useMemo、useRef、useLayoutEffect、useImperativeHandle 和 useDebugValue。这些…

计算机网络——实现smtp和pop3邮件客户端

实验目的 运用各种编程语言实现基于 smtp 协议的 Email 客户端软件。 实验内容 1. 选择合适的编程语言编程实现基于 smtp 协议的 Email 客户端软件。 2. 安装 Email 服务器或选择已有的 Email 服务器,验证自己的 Email 客户端软件是否能进行正常的 Email 收发功…

GAMS104 现代游戏引擎 2

渲染的难点可以分为一下三部分:如何计算入射光线、如何考虑材质以及如何实现全局光照。 渲染的难点之一在于阴影,或者说是光的可见性。如何做出合适的阴影效果远比想象中要难得多,在实践中往往需要通过大量的技巧才能实现符合人认知的阴影效…

基于React Router6 TS实现路由守卫

定义路由表 import {BrowserRouter, Route, RouteObject, Routes,} from "react-router-dom"; import {Home, Login, NotFound} from "/views"; import {RouterGuard} from "/routers/router_guard.tsx"; import {ReactNode} from "react&…

js实现webp转png/jpg

网上保存的图片是webp类型的&#xff0c;但是我把它嵌入flac格式的音频里后导致网页中无法播放 wps要会员&#xff0c;真麻烦。 完整代码&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"UTF-8">…

OpenHarmony实例应用:【常用组件和容器低代码】

介绍 本篇Codelab是基于ArkTS语言的低代码开发方式实现的一个简单实例。具体实现功能如下&#xff1a; 创建一个低代码工程。通过拖拽的方式实现任务列表和任务信息界面的界面布局。在UI编辑界面实现数据动态渲染和事件的绑定。 最终实现效果如下&#xff1a; 相关概念 低代…

leetcode刷题记录 day21

每日一题 找到冠军 I 一场比赛中共有 n 支队伍&#xff0c;按从 0 到 n - 1 编号。 给你一个下标从 0 开始、大小为 n * n 的二维布尔矩阵 grid 。对于满足 0 < i, j < n - 1 且 i ! j 的所有 i, j &#xff1a;如果 grid[i][j] 1&#xff0c;那么 i 队比 j 队 强 &a…

Tuxera Ntfs for mac 2023中文解锁版安装、密钥下载与激活教程 Tuxera激活码 tuxera破解

Tuxera Ntfs for mac2023是Mac中专用于读写外置存储的工具&#xff0c;具有强大的磁盘管理和修复功能&#xff0c;它在Mac上完全读写NTFS格式硬盘&#xff0c;快捷的访问、编辑、存储和传输文件。能够在 Mac 上读写 Windows NTFS 文件系统。Tuxera NTFS 实现在Mac OS X系统读写…

2024妈妈杯数学建模A 题思路分析-移动通信网络中 PCI 规划问题

# 1 赛题 A 题 移动通信网络中 PCI 规划问题 物理小区识别码(PCI)规划是移动通信网络中下行链路层上&#xff0c;对各覆盖 小区编号进行合理配置&#xff0c;以避免 PCI 冲突、 PCI 混淆以及 PCI 模 3 干扰等 现象。 PCI 规划对于减少物理层的小区间互相干扰(ICI)&#xff0c;增…

Java基础_19 IO流【重点】

1.File类会将此磁盘上面的文件或者文件夹抽象成为一个对象&#xff0c;可以拿对象调用方法来对咱们的文件或者文件夹操作(创建,删除&#xff0c;各种判断&#xff0c;查询)File类很多的方法createNewFilemkdirmkdirsdeleteisFileisDirectorygetNamegetPathgetParent2.递归算法【…

mysql搭建主从

mysql搭建主从: 1:拉取mysql镜像 docker pull mysql2:创建主从对应目录 3:建立一个简易的mysql docker run -it --name mytest -e MYSQL_ROOT_PASSWORD123 -d mysql4:进入这个简易的mysql;从中获取my.cnf文件 docker exec -it mytest bash5:从容器中将my.cnf拷贝到 /3306/c…

rspack 使用构建vue3脚手架

基于 Rust 的高性能 Web 构建工具。rspack 主要适配 webpack 生态&#xff0c;对于绝大多数 webpack 工具库都是支持的。 启动速度快&#xff1b;增量热更新快。兼容 webpack 生态&#xff1b;内置了 ts、jsx、css、css modules 等开箱即用。生产优化&#xff0c;tree shaking…

游戏内鼠标光标样式切换

参考自 通过程序设置鼠标的样式 - CodeBus 代码生成 .cur 文件附带详细注释-CSDN博客 读取当前目录里的鼠标文件 .cur // 程序名称&#xff1a;设置鼠标样式的范例 // 编译环境&#xff1a;Visual C 6.0~2022&#xff0c;EasyX_20220116 // #include <graphics.h> #in…

树莓派驱动开发--搭建环境篇(保姆级)

前言&#xff1a;树莓派的环境搭建关系到之后的驱动开发&#xff0c;故一个好的环境能让你顺手完成驱动开发&#xff01;我使用的是64位树莓派4b&#xff01;有显示屏的前提&#xff01;&#xff01;&#xff01;&#xff08;因为wifi连接太刁钻了&#xff09; 一、ubantu相关 …

java算法:反转数字

看算法描述&#xff1a; 1、给你一个 32 位的有符号整数 x &#xff0c;返回将 x 中的数字部分反转后的结果。 2、如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] &#xff0c;就返回 0。 3、假设环境不允许存储 64 位整数&#xff08;有符号或无符号&…

Linux如何安装kernel-debuginfo包以支持获取未压缩内核映像vmlinux?(yum | wget、rpm -ivh)

基础信息 本文以AnolisOS为例子&#xff0c;Centos和Ubuntu类似&#xff0c;核心都是安装kernel-debuginfo和kernel-debuginfo-common的rpm包 并且需要和内核版本子版本完全一致&#xff08;本质是使用同一份代码编译的&#xff09;假设系统安装的是8.6版本&#xff1a;比如ht…

【软件设计师】计算机软考下午题试题六,Java设计模式之简单工厂模式。

【软件设计师】计算机软考下午题试题六&#xff0c;Java设计模式之简单工厂模式。 代码如下&#xff1a; //简单工厂模式 public class SimpleFactory {public static void main(String[] args) {Product ProductAFactory.createProduct("A");ProductA.info();Produc…