由于前两天核酸阳的,一直发烧,故没有学习,csdn也没有进行更新。今天身体基本恢复,继续Django的学习旅程。也希望各位读者重视个人的身体健康,做好自己健康的第一负责人。
1.关于针对模型类的数据库修改方法补充
在models.py中重写模型类,用于增加数据库中的列。
并重新执行数据库迁移命令。
关于再重写模型类中用到的字段类型。
1.BooleanField()
数据库类型:tinyint(1)
编程语言中经常使用True和False来表示值
在数据库中使用1和0来表示具体的值
2.CharField()
数据库类型为varchar,
使用这个字段必须要指定max_length参数的值。
3.DataField()
数据库类型为:date
作用:表示日期
参数:
auto_now 每次保存对象时候,自动设置该字段为当前时间
auto_now_add:当对象第一次被创建时,自动设置当前时间
default:设置当前时间(取值为字符串格式,如‘2022-12-16’)
以上三个参数只能选择一个进行设置
在这种情况下,在创建表时,一般会新建两个字段,分别为建立表的时间和更新表的时间。
4.DateTimeField()
数据库类型:datetime(6)
作用:表示日期和时间
参数和DateField一样
5.FloatField()
数据库类型:double
编程语言中和数据库中都是用小数表示值
6.DecimalField()
数据库类型:decimal(x,y)
在编程语言中,使用小数表示这一列的值。
在数据库中使用的时小数。
参数:
1.max_digits:总位数,包括小数点后的位数。
2.decimal_places:小数点后的数字数量。
7.EmailField()
数据库类型:varchar
编程语言和数据库中都是用字符串。Django中会内建正则进行邮件规则的过滤。
8.IntegerField():
数据库类型:int
编程语言和数据库中都是用整数
9.ImageField()
数据库类型:varchar(100)
作用:在数据库中为了保存图片的路径
编程语言和数据库中都是用字符串用于保存图片的路径。
10.TextField()
数据库类型:longtext
作用:表示不定长的字符数据。
示例:此处建一个techer的模型类,由name姓名,age年龄和email邮箱构成。
执行命令后,获得迁移文件:
进行数据同步:
在demo1数据库中,多出了一张表:
可以发现,即使我们使用EmailField数据类型,但是在数据库中,保存的数据还是char类型的。
在Django3中,EmailField需要定义一个default的属性。否则在创建迁移文件时会产生报错信息。
2.模型类定义
复习模型类的定义语法如下:
from django.db import models
class 模型类名 (models.Model):
字段名 = models.字段类型(字段选项)
通过模型类的定义,就可以实现对数据库结构的增删改查,无需在mysql中敲击mysql的命令,极大程度的简化了开发的成本。
字段选项
字段选项是指创建的列存在额外的信息。
模型类允许多个字段选项出现,多个选项之间使用,隔开。
Primary_key如果设置为True,说明该列为主键,如果指定一个字段为逐渐,那么数据表不会创建id字段。
Blank如果设置为true,那么意味着字段可以为空,否则字段需要必须填写。
Null如果设置为True,那么表示这列值允许为空。这个字段默认为False,如果需要设置为False,Django建议使用default参数设置默认值为False
Default用于设置所在列的默认值,如果字段选项null=False,那么django建议使用这个参数。
db_index,如果设置为True,表示为这个列增加索引。
Unqiue,如果设置为True,表示增加了唯一约束。
db_column用于指定列的名称,如果不指定的话就采用属性名作为列名。
Verbose_name用于设置字段在admin界面上显示的名称。
需要注意的是,修改字段选项后,均要执行:makemigrations和migrate操作。
3.Meta类
Meta类可以定义在模型类的内部,作为模型类的内部类。用于管理表的相关属性。例如对表名的修改可以通过meta类来实现。
例如,在Meta类中,db_table意味着修改数据库的表名。Meta类中定义了一部分对表的控制信息。Django官方内置了一部分的属性。(名称不能变化,只能为Meta类。)
迁移数据库文件后,进入数据库,发现表名已经由原来的studentapp_teacher变为teacher.