model:模型
models使用了ORM技术
Object Relational Mapping 对象关系映射
在django中就是对数据操作的封装。
在model中 可以对数据库的表结构进行定义:
创建模型类——在数据库中对应生成的表
定义类属性——对应数据库中表的字段
模型的定义
需要继承自系统的models.Model
在定义时同时可以在class Meta() 元信息定义db_table 表名——在数据库中生成的表名
class ModelName(models.Model):
pass
class Meta:
db_table = 'new_tablename' # 对数据库中生成的表名进行重定义
定义字段
定义模型的字段即定义model 的属性:
格式:
模型属性(字段名) = models.字段属性(字段约束)
字段属性:
CharField
字符串
TextField
大内容的字符串
IntegerField
数字
FloatField
浮点
DecimalField
精准的浮点
BooleanField
布尔
NullBooleanField
空布尔
AutoField
自增
FileField
文件
ImageField
图片
字段约束
max_length
最大长度
default
默认值
unique
唯一性
index
索引
primary_key
主键 唯一
db_column
重命名
将定义好的模型映射到数据库中:
生成迁移文件
python manage.py makemigrations
执行迁移
python manage.py migrate
前提
数据库配置完毕
默认配置的SQLite
自主配置的MySQL
引擎(ENGINE)
数据库名字(NAME)
用户名(USER)
密码(PASSWORD)
主机(HOST)
端口(PORT)
驱动,需要伪装 #驱动一般定义在__init__.py文件中
在django项目的__init__文件中添加
pymysql.install_as_MySQLdb()
迁移思路:
分两步实现:
1.生成迁移文件,
2.执行迁移文件。
迁移文件的生成:
根据models文件生成对应的迁移文件
根据models和已有迁移文件差别,生成新的迁移文件
执行迁移文件
先去迁移记录查找,那些文件未迁移过
app_label+迁移文件名字
执行未迁移的文件
执行完毕,记录执行过的迁移文件
重新迁移:
删除迁移文件
删除迁移文件产生的表
删除迁移记录