文档章节

Django Model 模型建立

彩色泡泡糖
 彩色泡泡糖
发布于 05/22 09:55
字数 896
阅读 8
收藏 0

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

© 著作权归作者所有

下一篇: Django视图
彩色泡泡糖
粉丝 1
博文 73
码字总数 89260
作品 0
长沙
私信 提问
史上最友好的 Django 入门教程

Django是使用Python开发的开源Web开发框架。使用Django,你能以最小的代价构建和维护高质量的Web应用。 我们参考Django 官方文档,制作了一门新手更容易理解的Django 基础教程 ,帮助大家更好...

实验楼
2018/07/26
0
0
[Python] 探讨Django的MTV模式(一)

Django的特点 Django的主要目的是简便、快速地开发数据库驱动的网站——动态网站。它强调代码复用,多个组件可以方便地以“插件”形式服务于整个框架,因此它有许多功能强大的第三方插件。D...

长平狐
2013/06/03
704
0
Django contenttypes 框架详解

一、什么是Django ContentTypes? Django ContentTypes是由Django框架提供的一个核心功能,它对当前项目中所有基于Django驱动的model提供了更高层次的抽象接口。 当然我们不是说的是http中的...

天王盖地虎宝塔镇河妖
2018/08/12
0
0
[Python] 探讨Django的MTV模式(一)

Django的特点 Django的主要目的是简便、快速地开发数据库驱动的网站——动态网站。它强调代码复用,多个组件可以方便地以“插件”形式服务于整个框架,因此它有许多功能强大的第三方插件。D...

长平狐
2013/06/03
603
0
Django中扩展User模型

官方其实是有资料的,不过在这里还是写的浅显点。 官方地址https://docs.djangoproject.com/en/dev/topics/auth/customizing/ 在实际开发过程中,django提供的user字段肯定是不够用的,比如用...

spider1983
2014/08/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

FPGA 设备 USB Platform Cable USB

lsusbFuture Technology Devices International, Ltd FT232H Single HS USB-UART/FIFO IC

MtrS
今天
4
0
lua web快速开发指南(6) - Cache、DB介绍

"数据库"与"缓存"的基本概念 数据库与缓存是服务端开发人员的必学知识点. 数据库 "数据库"是一种信息记录、存取的虚拟标记地点的集合统称. 比如现实生活中, 我们经常会用到文件柜、书桌等等数...

水果糖的小铺子
今天
6
0
Oracle分页查询语句的写法

Oracle分页查询语句的写法 Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,Oracle分页查询语句基本上可以按本文给出的格式来进行套用。   Oracle分...

康师傅
昨天
5
0
java并发图谱

1527
昨天
2
0
Mybatis之拦截器Interceptor

使用mybatis时用PageHelper进行分页,用到了PageInterceptor,借此了解下mybatis的interceptor。Mybatis的版本是3.4.6,MybatisHelper的版本是5.1.3。 1、PageInterceptor 先上一段代码,如下...

克虏伯
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部