Django Model层是Django的数据模型层,每个Model类就是数据库中的一张表;html
咱们须要注意下面几点:mysql
model通常都是定义在不一样的APP的models.py模块文件中,能够是一个,也能够是多个;nginx
不一样model之间能够相互关联,相似表直接的关联;sql
APP中一旦定义了model,必须将此APP添加到settings文件中;数据库
且必定要记得运行makemigrations检查model更新和migrate同步数据模型在数据库中建表(这两个操做你们记得在哪里操做吗,以前的文章有写,快捷键就是Alt+Ctrl+R);django
咱们一块儿来看一下如何定义一个数据model模型,具体有哪些操做:app
from django.db import models class Course(models.Model): name = models.CharField(max_length=50, verbose_name="课程名") desc = models.CharField(max_length=300, verbose_name=u"课程描述") degree = models.CharField(choices=(("primary", '初级'), ("middle","中级"), ("junior", "高级")), max_length=10, verbose_name='课程难度') students = models.IntegerField(default=0, verbose_name="学习人数") # 须要安装pillow,图片处理库 image = models.ImageField(upload_to="courses/%Y/%m", verbose_name="课程图片", max_length=100) class Meta: verbose_name = "课程" verbose_name_plural = verbose_name
咱们知道每个Model类就是数据库中的一张表,那这段代码中咱们定义了五个字段,表明相应的数据库表中也有五个字段,你们注意一下字段的类型(等一下咱们再来说解关于字段类型), 这个表其实就想当于如下代码:工具
create table courses_course( id int not null primary key, name varchar(50), desc varchar(300), degree varchar(10), students int(11), image varchar(100), );
而后咱们须要在数据库中生成数据表,执行makemigrations
在app下创建migrations
目录,并记录下全部关于models.py的改动,好比0001_initial.py
, 可是这个改动尚未做用到数据库文件,接着执行migrate
将改动做用到数据库文件,好比产生table之类;学习
最后能够登陆mysql数据库检查表是否建立成功,你们还记得怎么登陆mysql数据库吗? 先开启mysql数据库,我是用的Winginx中的mysql数据库,因此我只须要在Winginx打开就好,而后在命令行工具中输入:命令行
mysql -ufirst_project -p123456 个人用户名是first_project ,密码是123456
而后咱们在数据库中查看表是否成功
use First_Project # 个人数据库是First_Project show tables; # 查看全部表
咱们是否是能看到有一个courses_course表呀,而后输入命令行
desc courses_course;
IntegerField
:整型字段;
CharField
:字符型字段,该字段类型有一个必需参数:max_length 在数据库水平限定了字符串最大长度;
ImageField
:图像字段,能自动验证上传的对象是否为合法的图像;
FloatField
:浮点字段;
AutoField
:根据已有id自增加的整型惟字段,通常每一个model类不需设置该字段,由于django会为每一个model自动设置;
我这里列举了几个比较经常使用的字段类型,你们若是想知道更多能够查看Django官方文档:https://docs.djangoproject.com/en/2.1/ref/models/fields/