当前位置: 首页 > news >正文

一周学会Django5 Python Web开发-Django5模型定义

锋哥原创的Python Web开发 Django5视频教程:

2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计41条视频,包括:2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~、第2讲 Django5安装、第3讲 Django5创建项目(用命令方式)等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV14Z421z78C/Django5对各种数据库提供了很好的支持,包括PostgreSQL、MySQL、SQLite和 Oracle,而且为这些数据库提供了统一的API方法,这些API统称为ORM框架。通过使用Django5内置的ORM框架可以实现数据库连接和读写操作。

ORM框架是一种程序技术,用于实现面向对象编程语言中不同类型系统的数据之间的转换。 从效果上说,它创建了一个可在编程语言中使用的“虚拟对象数据库”,通过对虚拟对象数据库的操作从而实现对目标数据库的操作,虚拟对象数据库与目标数据库是相互对应的。在 Django5中,虚拟对象数据库也称为模型,通过模型实现对目标数据库的读写操作,实现方法如下:

  1. 配置目标数据库,在settings.py中设置配置属性

  2. 构建虚拟对象数据库,在App 的models.py文件中以类的形式定义模型。

  3. 通过模型在目标数据库中创建相应的数据表。

  4. 在其他模块(如视图函数)里使用模型来实现目标数据库的读写操作。

settings.py下我们配置mysql数据库:

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'db_python222','USER': 'root','PASSWORD': '123456','HOST': 'localhost','PORT': '3308'}
}

然后我们在models.py里新建两个模型类,分别是图书模型BookInfo和图书类别模型BookTypeInfo,他们是多对一的关系;

class BookTypeInfo(models.Model):id = models.AutoField(primary_key=True)bookTypeName = models.CharField(max_length=20)class Meta:db_table = "t_bookType"verbose_name = "图书类别信息"  # 给模型取个直观的名字class BookInfo(models.Model):id = models.AutoField(primary_key=True)bookName = models.CharField(max_length=20)price = models.FloatField()publishDate = models.DateField()bookType = models.ForeignKey(BookTypeInfo, on_delete=models.PROTECT)class Meta:db_table = "t_book"verbose_name = "图书信息"  # 给模型取个直观的名字

模型字段类型如下:

  • AutoField:自增长类型,数据表的字段类型为整数,长度为11位。

  • BigAutoField:自增长类型,数据表的字段类型为bigint,长度为20位。

  • CharField:字符类型。

  • BooleanField:布尔类型。

  • CommaSeparatedIntegerField:用逗号分割的整数类型。DateField:日期( Date)类型。

  • DateTimeField:日期时间( Datetime)类型。Decimal:十进制小数类型。

  • EmailField:字符类型,存储邮箱格式的字符串。

  • FloatField:浮点数类型,数据表的字段类型变成Double类型。IntegerField:整数类型,数据表的字段类型为11位的整数。

  • BigIntegerField:长整数类型。

  • IPAddressField:字符类型,存储Ipv4地址的字符串。

  • GenericIPAddressField:字符类型,存储Ipv4和Ipv6地址的字符串。NullBooleanField:允许为空的布尔类型。

  • PositiveIntegerFiel:正整数的整数类型。

  • PositiveSmallIntegerField:小正整数类型,取值范围为0~32767。SlugField:字符类型,包含字母、数字、下画线和连字符的字符串。

  • SmallIntegerField:小整数类型,取值范围为-32,768~+32,767。

  • TextField:长文本类型。

  • TimeField:时间类型,显示时分秒HH:MM[ :ss[.uuuuuu]]。URLField:字符类型,存储路由格式的字符串。

  • BinaryField:二进制数据类型。

  • FileField:字符类型,存储文件路径的字符串。ImageField:字符类型,存储图片路径的字符串。

  • FilePathField:字符类型,从特定的文件目录选择某个文件。

模型字段参数如下:

  • verbose_name:默认为None,在 Admin站点管理设置字段的显示名称。

  • primary_key:默认为False,若为True,则将字段设置成主键。

  • max_length:默认为None,设置字段的最大长度。

  • unique:默认为False,若为True,则设置字段的唯一属性。

  • blank:默认为False,若为True,则字段允许为空值,数据库将存储空字符串。null:默认为False,若为True,则字段允许为空值,数据库表现为NULL。

  • db_index:默认为False,若为True,则以此字段来创建数据库索引。default:默认为NOT_PROVIDED对象,设置字段的默认值。

  • editable:默认为True,允许字段可编辑,用于设置Admin的新增数据的字段。serialize:默认为True,允许字段序列化,可将数据转化为JSON格式。

  • unique_for_date:默认为None,设置日期字段的唯一性。

  • unique_for_month:默认为None,设置日期字段月份的唯一性。unique_for_year:默认为None,设置日期字段年份的唯一性。choices:默认为空列表,设置字段的可选值。

  • help_text:默认为空字符串,用于设置表单的提示信息。

  • db_column:默认为None,设置数据表的列名称,若不设置,则将字段名作为数据表的列名。

  • db_tablespace:默认为None,如果字段已创建索引,那么数据库的表空间名称将作为该字段的索引名。注意:部分数据库不支持表空间。

  • auto_created:默认为False,若为True,则自动创建字段,用于一对一的关系模型。validators:默认为空列表,设置字段内容的验证函数。

  • error_messages:默认为None,设置错误提示。

ForeignKey方法参数如下:

参数名参数说明
to指定关联的目标模型类。可以使用字符串表示模型类的路径,也可以直接使用模型类的引用。
on_delete指定当关联对象被删除时的行为。CASCADE、PROTECT、SET_NULL、SET_DEFAULT、SET0、DO_NOTHING。
related_name指定反向关联的名称,默认为模型类名_set。
to_field指定关联的目标模型类中用于关联的字段名称。默认为主键字段。
db_index如果为True,则在目标模型的关联字段上创建索引。
null指定关联字段是否可以为空。如果 null=True,则数据库中该字段将允许 NULL值。
blank指定关联字段是否可以为空。如果blank=True,则表单中该字段可以为空。
limit_choices_to指定关联对象的过滤条件。可以是一个字典、一个 QuerySet或一个函数。
verbose_name用于在 Django Admin后台中显示字段名称。
help_text用于在 Django Admin后台中显示帮助文本。

on_delete的models属性有下面设置选项;

  • CASCADE:这就是默认的选项,级联删除,你无需显性指定它。

  • PROTECT: 保护模式,如果采用该选项,删除的时候,会抛出ProtectedError错误。

  • SET_NULL: 置空模式,删除的时候,外键字段被设置为空,前提就是blank=True, null=True,定义该字段的时候,允许为空。

  • SET_DEFAULT: 置默认值,删除的时候,外键字段设置为默认值,所以定义外键的时候注意加上一个默认值。

  • SET(): 自定义一个值,该值当然只能是对应的实体了

相关文章:

一周学会Django5 Python Web开发-Django5模型定义

锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计41条视频,包括:2024版 Django5 Python we…...

kingbaseESV8逻辑备份还原

数据库逻辑备份还原 sys_dump -h127.0.0.1 -Usystem -f/home/kingbase/db01.dmp db01 ksql -h127.0.0.1 test system -c drop database db01 ksql -h127.0.0.1 test system -c create database db01 ksql -h127.0.0.1 -Usystem -ddb01 -f/home/kingbase/db01.dmp --------…...

FreeRtos作业1

1.总结keil5下载代码和编译代码需要注意的事项 代码写完之后的操作流程 2.总结STM32Cubemx的使用方法和需要注意的事项 选择芯片型号 生成代码 3.总结STM32Cubemx配置GPIO的方法 4、使用定时器2让黄灯闪烁 /* USER CODE END Header */ /* Includes --------------------------…...

spring boot dynamic 动态数据数据源配置连接池

前言 我们可以使用 dynamic-datasource 来快速实现多数据源,但是多数据源配置连接池 以及说明文档都是收费的。 这里整理的连接池的配置以及配置说明 连接池配置 (druid或者 hikari 选择一个即可) 特此说明 如果配置配到了 spring.datasour…...

vue3中如何使用 watch 函数来观察响应式数据的变化

前言 在 Vue 3 中,可以使用 watch 函数来观察响应式数据的变化。这个函数可以在组件的 setup 函数中使用。watch()方法还可以实现更多复杂的功能,比如异步获取数据并在数据更新时重新渲染页面。 代码示例 1、以下是一个使用 Vue 3 watch 函数的简单示例…...

自建机房私有云吗?

大家好,我是小码哥,之前一种有没搞清楚公有云、私有云的概念,今天算是弄清楚了,这里给大家分享一下公有云、私有云的区别,以及自建机房算不算私有云! 其实私有云(Private Cloud)和公…...

解决npm init vue@latest证书过期问题:npm ERR! code CERT_HAS_EXPIRED

目录 一. 问题背景 二. 错误信息 三. 解决方案 3.1 临时解决办法 3.2 安全性考量 一. 问题背景 我在试图创建一个新的Vue.js项目时遇到了一个问题:npm init vuelatest命令出现了证书过期的错误。不过这是一个常见的问题,解决起来也简单。 二. 错误…...

缓存和缓存的常用使用场景

想象一下,一家公司在芬兰 Google Cloud 数据中心的服务器上托管一个网站。对于欧洲用户来说,加载可能需要大约 100 毫秒,但对于墨西哥用户来说,加载需要 3-5 秒。幸运的是,有一些策略可以最大限度地减少远程用户的请求延迟。 这些策略称为缓存和内容交付网络 (CDN),它们是…...

模板方法模式(继承的优雅使用)

目录 前言 UML plantuml 类图 实战代码 AbstractRoutingDataSource DynamicDataSource DynamicDataSourceContextHolder 前言 在设计类时,一般优先考虑使用组合来替代继承,能够让程序更加的灵活,但这并不意味着要完全抛弃掉继承。 …...

百度智能云千帆,产业创新新引擎

本文整理自 3 月 21 日百度副总裁谢广军的主题演讲《百度智能云千帆,产业创新新引擎》。 各位领导、来宾、媒体朋友们,大家上午好。很高兴今天在石景山首钢园,和大家一起沟通和探讨大模型的发展趋势,以及百度最近一段时间的思考和…...

Python下载cuda包失败后到成功(方便使用GPU加速运算,显著提高代码运行速度)

一、查询自己电脑上的cuda版本方法: 1.在windows的cmd里查询显卡cuda的版本号,命令行输入:nvidia-smi 2.在NVIDIA控制面板上寻找自己电脑上cuda的版本 二、安装支持的cuda的python cupy库 因为我的电脑上为cuda11.4,所以使用cuda114,不同的版…...

【Flink】Flink 处理函数之基本处理函数(一)

1. 处理函数介绍 流处理API,无论是基本的转换、聚合、还是复杂的窗口操作,都是基于DataStream进行转换的,所以统称为DataStreamAPI,这是Flink编程的核心。 但其实Flink为了更强大的表现力和易用性,Flink本身提供了多…...

【Java - 框架 - Lombok】(2) SpringBoot整合Lombok完成日志的创建使用 - 快速上手;

"SpringBoot"整合"Lombok"完成日志的创建使用 - 快速上手; 环境 “Java"版本"1.8.0_202”;“Lombok"版本"1.18.20”;“Spring Boot"版本"2.5.9”;“Windows 11 专业版_22621…...

linux 系统安装php 8.0.2

1. 安装包准备 https://www.php.net/distributions/php-8.0.22.tar.gz 我下载到 /usr/local/src 这个目录了 cd /usr/local/srcwget https://www.php.net/distributions/php-8.0.22.tar.gz 2. tar 解压 然后进到解压的文件夹 tar -zxvf php-8.0.22.tar.gz cd php-8.0.2…...

你管这破玩意叫网络

你是一台电脑,你的名字叫 A 很久很久之前,你不与任何其他电脑相连接,孤苦伶仃。 直到有一天,你希望与另一台电脑 B 建立通信,于是你们各开了一个网口,用一根网线连接了起来。 用一根网线连接起来怎么就能…...

系统开发实训小组作业week5 —— 用例描述与分析

目录 1、电影管理 1.1、 用例描述 1.2、 活动图 1.3、 界面元素 1.4、 功能 2、用户管理 2.1、 用例描述 2.2、 活动图 2.3、 界面元素 2.4、 功能 1、电影管理 1.1、 用例描述 用例号 UC009-01 用例名称 电影管理 用例描述 管理员实现对电影信息、座位数量、价…...

C语言例4-35:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡、问鸡翁、鸡母和鸡雏各几何?

方法一&#xff1a; 代码如下&#xff1a; //鸡翁一&#xff0c;值钱五&#xff1b;鸡母一&#xff0c;值钱三&#xff1b;鸡雏三&#xff0c;值钱一。百钱买百鸡、问鸡翁、鸡母和鸡雏各几何&#xff1f; //方法一&#xff1a; #include<stdio.h> int main(void) {int x…...

Leetcode 167. 两数之和 II - 输入有序数组

给你一个下标从 1 开始的整数数组 numbers &#xff0c;该数组已按 非递减顺序排列 &#xff0c;请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] &#xff0c;则 1 < index1 < index2 < numbers.…...

Java实体类之间的转换

一.为什么要转换实体类 通常在后端开发中经常不直接返回实体Entity类&#xff0c;经过处理转换返回前端&#xff0c;前端提交过来的对象也需要经过转换Entity实体才做存储。 二.怎么转换 使用的BeanUtils.copyProperties方法虽然可以实现转换&#xff0c;但是比较粗暴&#…...

ESCTF-Web赛题WP

0x01-初次见面-怦然心动:your name? 随便输入一个字 根据提示可以看到 我们需要看源代码 直接 搜索 secret 关键字或者 ESCTF flag ESCTF{K1t0_iS_S0_HAPPy} 0x02-小k的请求 更安全的传参 post 参数为ESCTF 值为 love 自己的ip 同时还有个要求 是需要从度娘转过来 https://www…...

某物登录表单加密

之前分析过某物h5的以及小程序的搜索接口,就是一个aes,秘钥不固定,表单里把秘钥以及密文一起发过去,服务器解密后再把数据加密返回,客户端解密展示到页面上. 这期是关于app的登录,密码登录 声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;…...

2024java面试题

题目&#xff1a;反转一个单链表描述&#xff1a;给定一个单链表的头节点&#xff0c;将其反转&#xff0c;返回反转后的链表的头节点。 题目&#xff1a;合并两个有序链表描述&#xff1a;给定两个有序链表的头节点&#xff0c;将它们合并成一个有序链表&#xff0c;返回合并…...

FebHost:什么是哈萨克斯坦.KZ域名?

哈萨克斯坦&#xff0c;作为中亚地区重要的一员,其国家域名”.kz”正成为这个独立国家在网络世界中的代表。作为一个经济快速发展的国家,哈萨克斯坦的互联网基础设施和网络应用也在蓬勃发展。而.kz域名正是哈萨克斯坦网络身份的重要体现。 作为注册和管理.kz域名的主要机构,哈…...

python(一)网络爬取

在爬取网页信息时&#xff0c;需要注意网页爬虫规范文件robots.txt eg:csdn的爬虫规范文件 csdn.net/robots.txt User-agent: 下面的Disallow规则适用于所有爬虫&#xff08;即所有用户代理&#xff09;。星号*是一个通配符&#xff0c;表示“所有”。 Disallow&…...

港大新工作 HiGPT:一个模型,任意关系类型 !

论文标题&#xff1a; HiGPT: Heterogeneous Graph Language Model 论文链接&#xff1a; https://arxiv.org/abs/2402.16024 代码链接&#xff1a; https://github.com/HKUDS/HiGPT 项目网站&#xff1a; https://higpt-hku.github.io/ 1. 导读 异质图在各种领域&#xf…...

Git版本管理使用手册 - 5 - Git的.ignore文件语法

Git的.ignore文件 1.使用 .ignore文件可以忽略指定文件的版本控制。 2.语法&#xff1a; (1)#开头表示注释 (2)&#xff01;开头表示不忽略匹配文件 (3)* 表示除/外&#xff0c;任何字符串 (4)&#xff1f;表示除/外&#xff0c;任何一个字符 (5)/ 如果模式的结尾有分割符/&am…...

使用Spring Cloud Gateway构建API网关,实现路由、过滤、流量控制等功能。

使用Spring Cloud Gateway构建API网关&#xff0c;实现路由、过滤、流量控制等功能。 使用Spring Cloud Gateway可以轻松地构建API网关&#xff0c;实现路由、过滤、流量控制等功能。下面是一个简单的示例&#xff0c;演示如何在Spring Boot应用程序中集成Spring Cloud Gatewa…...

Matlab|电动汽车充放电V2G模型

目录 1 主要内容 1.1 模型背景 1.2 目标函数 1.3 约束条件 2 部分代码 3 效果图 4 下载链接 1 主要内容 本程序主要建立电动汽车充放电V2G模型&#xff0c;采用粒子群算法&#xff0c;在保证电动汽车用户出行需求的前提下&#xff0c;为了使工作区域电动汽车尽可能多的消…...

<QT基础(4)>QLabel使用笔记

Label 前面的文章里面把QLabel批量引入ScrollArea作为预览窗口&#xff0c;这篇把图像填充到QLable的PixelMap展示指定图像。 参数设置 设置QLabel的大小格式 QWidget* widget new QWidget; widget->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); widget->…...

2016年认证杯SPSSPRO杯数学建模C题(第二阶段)如何有效的抑制校园霸凌事件的发生全过程文档及程序

2016年认证杯SPSSPRO杯数学建模 C题 如何有效的抑制校园霸凌事件的发生 原题再现&#xff1a; 近年来&#xff0c;我国发生的多起校园霸凌事件在媒体的报道下引发了许多国人的关注。霸凌事件对学生身体和精神上的影响是极为严重而长远的&#xff0c;因此对于这些情况我们应该…...

为什么检测行业不能用网站做/友情链接交换平台免费

cmin和cmax介绍 cmin和cmax是PostgreSQL中表的系统字段之一&#xff0c;用来判断同一个事务内的其他命令导致的行版本变更是否可见。即在事务中每个命令都应该能看到其之前执行的命令的变更。 很多人都通过测试都会发现在同一张表中cmin和cmax总是相等的&#xff0c;所以认为…...

建个网站有收/北京疫情又严重了

StratifiedKFold用法类似Kfold&#xff0c;但是他是分层采样&#xff0c;确保训练集&#xff0c;测试集中各类别样本的比例与原始数据集中相同。 from sklearn.model_selection import StratifiedKFold X np.array([[1, 2, 3, 4],[11, 12, 13, 14],[21, 22, 23, 24],[31, 32,…...

个人资讯网站建设/上海抖音seo公司

大家好&#xff0c;我是吴星宇&#xff0c;一名在校计算机系大学生&#xff0c;你们可以叫我小吴&#xff0c;今天21.6.19学校已经开始了考试周&#xff0c;而我这学期也完成了c语言的学习。对编程有着足够的兴趣&#xff0c;接下来会陆续发布一些c语言的博客&#xff0c;在学习…...

怎么用百度云做网站空间/seo怎么做新手入门

如果集合中不存在给定元素&#xff0c;则该集合add()方法会将其添加到集合中。用法:set.add(elem)The add() method doesnt add an element to theset if its already present in it otherwise itwill get added to the set.参数&#xff1a;add() takes single parameter(elem…...

许昌抖音推广公司/嘉兴seo外包

***利用了Facebook平台上的一个漏洞&#xff0c;令将近5000万个Facebook账户的访问令牌面临被窃取的风险。访问令牌是一种数字密钥&#xff0c;能让用户在每次使用Facebook时都不用重新输入密码。Facebook工程师周二发现了漏洞&#xff0c;它存在于Facebook的View As功能中&…...

番禺做网站600元/seo研究协会网

写在文章之前&#xff1a;博友们&#xff0c;你的支持是我最大的动力&#xff0c;在阅读我文章的同时&#xff0c;也请为我投上你宝贵的一票&#xff0c;谢谢。 投票请进&#xff1a;http://2010blog.51cto.com/855319 &#xff0d;&#xff0d;&#xff0d;&#xff0d;&#…...