Python学习打call第五十七天:Django Model 模型建立

Django Model 模型

Django Model层是Django的数据模型层,每一个Model类就是数据库中的一张表;

我们需要注意下面几点:

  • model一般都是定义在不同的APP的models.py模块文件中,可以是一个,也可以是多个;

  • 不同model之间可以相互关联,类似表直接的关联;

  • APP中一旦定义了model,必须将此APP添加到settings文件中;

  • 且一定要记得运行makemigrations检查model更新和migrate同步数据模型在数据库中建表(这两个操作大家记得在哪里操作吗,之前的文章有写,快捷键就是Alt+Ctrl+R);

如何定义一个数据model模型

我们一起来看一下如何定义一个数据model模型,具体有哪些操作:

  • 首先我们需要在APP中的models.py创建Model,我们用courses 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;  # 查看所有表

数据库表.jpg

我们是不是能看到有一个courses_course表呀,然后输入命令行desc courses_course;
查看表字段.jpg

Field 字段类型

IntegerField:整型字段;

CharField:字符型字段,该字段类型有一个必需参数:max_length 在数据库水平限定了字符串最大长度;

ImageField:图像字段,能自动验证上传的对象是否为合法的图像;

FloatField:浮点字段;

AutoField:根据已有id自增长的整型唯字段,一般每个model类不需设置该字段,因为django会为每个model自动设置;

我这里列举了几个比较常用的字段类型,大家如果想知道更多可以查看Django官方文档:https://docs.djangoproject.com/en/2.1/ref/models/fields/

参考视频:https://www.9xkd.com/user/plan-view.html?id=4022383016

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容