django 系列-模型类(一)
模型类中的字段说明和选项
字段说明:
和MySQL的类型类似的
类型 | 说明 |
---|---|
AutoField | 自动增长的IntegerField,通常不用指定,不指定时Django会自动创建属性名为id的自动增长属性 |
BooleanField | 布尔字段,值为True或False |
NullBooleanField | 支持Null、True、False三种值 |
CharField | 字符串,参数max_length表示最大字符个数,必须设置 |
TextField | 大文本字段,一般超过4000个字符时使用 |
IntegerField | 整数 |
DecimalField | 十进制浮点数, 参数max_digits表示总位数, 参数decimal_places表示小数位数 |
FloatField | 浮点数 |
DateField | 日期, 参数auto_now表示每次保存对象时,自动设置该字段为当前时间,用于”最后一次修改”的时间戳,它总是使用当前日期,默认为False; 参数auto_now_add表示当对象第一次被创建时自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认为False; 参数auto_now_add和auto_now是相互排斥的,组合将会发生错误 |
TimeField | 时间,参数同DateField |
DateTimeField | 日期时间,参数同DateField |
FileField | 上传文件字段 |
ImageField | 继承于FileField,对上传的内容进行校验,确保是有效的图片 |
选项:
选项 | 说明 |
---|---|
null | 如果为True,表示允许为空,默认值是False |
blank | 如果为True,则该字段允许为空白,默认值是False |
db_column | 字段的名称,如果未指定,则使用属性的名称 |
db_index | 若值为True, 则在表中会为此字段创建索引,默认值是False |
default | 默认 |
primary_key | 若为True,则该字段会成为模型的主键字段,默认值是False,一般作为AutoField的选项使用 |
unique | 如果为True, 这个字段在表中必须有唯一值,默认值是False |
verbose_name | 主要是admin后台显示 |
null是数据库范畴的概念,blank是表单验证范畴的
定义模型类
1.切换到项目开发的 python 虚拟环下境安装 pymysql 模块:
1 | leazhi@ubuntuhome:~$ workon web12 |
注意:如果你是远程开发,那么还需要将安装在远程主机上的 pymysql 包同步到本地来,否则后面在配置连接 mysql 的时候会报 mysqlclient 没有安装的错误
2.在子应用下的 models.py(该文件在创建子应用的时候自动生成的,无需在手动创建) 文件中写入:
1 | from django.db import models |
执行上面这个模型类,相当于在 mysql 中执行了:
1 | create table book(`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,`书名` VARCHAR(20) NOT NULL ,`日期` DATE NOT NULL, `阅读量` INTEGER DEFAULT 0, `评论量` INTEGER DEFAULT 0, `是否上架` DOUBLE PRECISION default FALSE)ENGINE=InnoDB DEFAULT CHARSET=utf8; |
3.编辑项目下的 settings.py 文件,修改 DATABASES 的配置,如下:
1 | DATABASES = { |
4.编辑项目目录下的初始化文件 init.py, 导入 pymysql:
1 | import pymysql |
5.登录mysql ,创建数据库 book:
1 | (root@localhost (none) 06:39:)>create database if not exists book; |
6.打开终端工具,切换到项目主目录下,执行:
6.1.生成一个记录(迁移文件)
1 | (web12) leazhi@ubuntuhome:~/web12$ python manage.py makemigrations |
注意:执行此步骤,不会到数据中生成任何数据,只会在当前子应用目录下生成迁移文件
6.2.同步到数据库中
1 | (web12) leazhi@ubuntuhome:~/web12$ python manage.py makemigrations |
7.登录 mysql ,切换到创建的 book 库中,查看生成的 bookinfo 表字段:
1 | (root@localhost (none) 10:16:)>use book; |
插入测试数据
因为 peopleinfo 关联的主表是 bookinfo,所以先要在 bookinfo 表中插入数据,方可在 peopleinfo 表中插入
1.接上一篇模型类(一),分别往 2 个表中插入如下数据:
1.1.bookinfo 表:
1 | insert into bookinfo(name, pub_date, readcount,commentcount, is_delete) values |
1.2.peopleinfo 表:
1 | insert into peopleinfo(name, gender, book_id, description, is_delete) values |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 生活日志!
评论