一. 模型类
准备工作:
a.安装mysql数据库(linux或者windows)
b. 在django的虚拟环境中使用 pip install mysqlclient(也可以安装pymysql,不过后续需要配置)
c. 在全局settings.py配置中配置数据库相关信息
1.定义一个模型类
a. 一个mysql软件中,可以有多个数据库
b. 一个数据库中,可以有多张数据表
c. 一张数据表中,有多条数据(多条记录)以及多个字段(多个列)
d. 一个数据模型类对应一个数据表
e. 数据模型类,需要继承Model父类或者Model子类
f. 在数据模型类中,添加的类属性(Field对象)来对应数据表中的字段
from django.db import models
# Create your models here.
class Projects(models.Model):
# 1、只要某一个字段中primary_key=True,那么Django就不会自动创建id字段,会使用自定义的
# 2、CharField -> varchar IntegerField -> int TextField -> text
id = models.AutoField(primary_key=True)
# 3、verbose_name为个性化信息
# 3、help_text帮助文本信息,在api接口文档平台和admin后端站点中会用于提示,往往跟verbose_name一致
# 4、unique用于指定唯一键,默认为False
# 5、CharField至少要指定一个max_length必传参数,代表此字段的最大长度,不能为负数
name = models.CharField(max_length=200, verbose_name='项目名称', help_text='项目名称', unique=True)
leader = models.CharField(max_length=50, verbose_name='项目负责人', help_text='项目负责人')
tester = models.CharField(max_length=50, verbose_name='测试人员', help_text='测试人员')
programmer = models.CharField(max_length=50, verbose_name='开发人员', help_text='开发人员')
# 6、null指定数据在保存时是否可以为空,默认不能为空,如果null=True,那么可以为空值
# 7、blank指定前端用户在创建数据时,是否需要传递,默认需要传递,如果不传递,需要blank设置为True
# 8、default为某一个字段指定默认值,往往会跟blank一起使用
desc = models.TextField(verbose_name='项目简介', help_text='项目简介', blank=True, default='xxx简介', null=True)
# 9、DateTimeField可以添加auto_now_add选项,django会自动添加创建记录时的时间
create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间', help_text='创建时间')
# 10、DateTimeField可以添加auto_now选项,django会自动添加更新记录时的时间
update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间', help_text='更新时间')
# 11、执行迁移脚本之后,生成的数据表名默认为 子应用名_模型类名小写
class Meta:
# 12、可以在模型类下定义Meta子类,Meta子类名称固定
# 13、可以使用db_table类属性,来指定表名
db_table = 'tb_projects'
# 14、指定表的个性化描述
verbose_name = '项目表'
def __str__(self):
return f"<{self.name}>"
2.迁移数据库
a. 执行迁移命令:
b.迁移完成后会生成的迁移脚本
c.,并在数据库生成对应的表