模型层的了解

大家都知道Django遵循的是MTV模式,其中M指的就是Model,就是今天要学习的模型层。

模型(Model)负责业务 对象数据库关系映射(ORM)

ORM是“对象-关系-映射”的简称,主要任务是:

  1. 建立模型类和表之间的对应关系,允许我们通过面向对象的方式来操作数据库。
  2. 将对象、列表的操作,转换为sql语句。
  3. 根据设计的模型类生成数据库中的表格。
  4. 将sql查询到的结果转换为对象、列表

Model是MVC框架中重要的一部分,主要负责程序中用于处理数据逻辑的部分(如数据的存取)。它包含你所储存数据的必要字段和行为。通常,每个模型对应数据库中唯一的一张表。

模型

我们知道了模型层的作用,你有没有想过模型是一个什么东西呢?下面带领大家一起来学习。

什么是模型?

  1. 模型是一个Python类,它是由django.db.models.Model派生出的子类。
  2. 一个模型类代表数据库的一张数据表。
  3. 模型类中的每一个属性都代表数据库中的一个字段。
  4. 模型是数据交互的接口,是表示和操作数据库的方法和方式。

创建模型类

在应用下的models.py中编写模型类模板(下面我会讲到字段名相关知识):

from django.db import models
class 模型类名(models.Model):字段名 = models.字段类型(字段选项)

举个栗子:

class Book(models.Model):title = models.CharField('书名', max_length=50, default='',unique=True)public = models.CharField('出版社',max_length=100,default='')price = models.DecimalField('价格',max_digits=7, decimal_places=2)info = models.CharField('描述',max_length=100, default='')market_price = models.DecimalField('零售价',max_digits=7,decimal_places=2,default=0.0)

重点是编写完成后一定要在终端进行迁移同步,执行以下命令:

python3 manage.py makemigrations

python3 manage.py migrate

字段类型

字段是模型中最重要的内容之一,也是唯一必须的部分。字段在Python中表现为一个类属性,体现了数据表中的一个列。请不要使用cleansavedelete等Django内置的模型API名字,防止命名冲突。下面我会列举出一些常见的字段类型:

BooleanField():数据库类型是tinyint(1),使用Ture或False来表示值。

CharField():数据库类型是varchar,必须要指定max_length参数值,这个是指字符的长度。

DateField():对应的数据库类型是date,用来表示日期,以下三个参数只能多选一,auto_now:每次保存对象时,自动设置该字段为当前时间(取值:Ture/False);auto_now_add:当对象第一次被创建时自动设置当前时间(取值:Ture/False);default:设置当前时间(取值:字符串格式时间如:'2022-11-7')。

DateTimeField(): 和上面DateField()参数一致,不过是这个精确到小时分钟秒。

FloatField():数据库类型是double,表示小数。

DecimalField():对应数据库中的decimal(x,y),使用小数表示该列的值,参数max_digits:表示位数总数,包括小数点后面的位数;decimal_places:表示小数点后的数字数量。

EmailField():字符串,用来存邮箱。

IntegerField():数据库类型中的int,使用整数。

ImageField():数据库类型是varchar(100),字段的值保存的是该图片的路径。

更多精彩请阅读官方文档:http://docs.djangoproject.com/en/2.2/ref/models/fields/#field-types

字段选项

通过字段选项,可以实现对字段的约束

允许出现多个字段选项,多个选项之间使用,隔开

primary_key:如果设置为Ture,表示该例为主键,如果指定一个字段为主键,则此数据库表不会创建id字段。

blank:设置为Ture时,字段可以为空;设置为False时,字段是必须填写的。

null:如果设置为True,表示该列值允许为空;默认为False。

default:设置所在列的默认值,如果字段选项null=False建议添加此项。

db_index:如果设置为Ture,表示为该列增加索引。

unique:如果设置为Ture,表示该字段在数据库中的值必须是唯一(不能重复出现)。

db_column:指定列的名称,如果不指定的话则采用属性名作为列名。

verbose_name:设置此字段在admin界面上的显示名称。

希望本篇文章对你有所帮助

Django中的模型层相关推荐

  1. Django框架(10.Django中的模型类的定义以及模型类字段属性和选项)

    Django中的模型类的定义以及模型类字段属性和选项 1.模型类的定义 2.模型类属性命名限制 2.1字段类型和属性 2.2选项 1.模型类的定义 ORM:表就代表类,字段代表属性 模型类需要继承自m ...

  2. Django框架的模型层之多表操作

    目录 一 创建模型 二 表记录的增删改 一对多 多对多 三.基于对象的跨表查询 一对一查询(Author 与 AuthorDetail) 一对多查询(publish与book) 多对多查询 (Auth ...

  3. Django框架(16.Django中的模型类管理器以及自定义管理器)

    模型类.objects.all()->objects是一个什么东西呢? 答:objects是Django帮我自动生成的管理器对象,通过这个管理器可以实现对数据的查询. objects是model ...

  4. Django中的模型继承

    1.使用最原始的方式继承 class Animal(models.Model):name = models.CharField(max_length=20)age = models.IntegerFi ...

  5. django中model模型

    python manage.py dumpdata blog       # 导出blog数据 python manage.py loaddata blog_dump.json   # 导入数据  m ...

  6. Django中--自定义模型管理器类

    BookInfo.objects.all()->objects是一个什么东西呢? 答:objects是models.Manger类的一个对象,是Django帮我自动生成的管理器对象,通过这个管理 ...

  7. Django中models模型(操作数据库)

    ORM 自己创建数据库 连接数据库 Django操作表 数据库操作 新建 删除 获取数据 实例:用户管理 Django开发操作数据库更简单,内部提供了ORM框架 ORM的流程 ORM ORM,全称 O ...

  8. Django学习之模型层---多表操作之查(一)

    1>基于对象的跨表查询 基于对象的跨表查询,转换成sql语句就相当sql的子查询,以一条sql的输出作为另一条sql的筛选条件 目前的表结构及数据如下(数据随意插入,小说迷请无视): 以几个例子 ...

  9. 【小白学习keras教程】三、Kears中常见模型层Padding、Conv2D、MaxPooling2D、Flatten和Dense

    @Author:Runsen 文章目录 基础知识 1.Padding 2. FIlter/kernels 3.Pooling 4.Flattening 5.Fully Connected (Dense ...

最新文章

  1. DecimalFormat 的使用
  2. 财务学习mysql_从零开始学 MySQL - 前言
  3. MySQL完整备份,还原
  4. H5js的一些好玩的东西
  5. JAVA——基于HttpClient的正方教务系统[1999-2020]模拟登录基本解决方案
  6. osm2mysql_安装部署MySQL主从复制
  7. 洛谷P4742(tarjan缩点+拓扑DP)
  8. html2canvas改成同步,html2canvas转为图片异步转同步问题(记录)
  9. STM32f4 ARM Bootloader
  10. HTML5 布局元素
  11. 玛丽卡(codevs 1021)
  12. 这家共享单车确认已坑12.5万用户 总金额超2512万元
  13. Visual Studio Code 1.41 发布
  14. ubuntu18安装微信
  15. delphi 停电文本数据丢失_河南照片数据恢复怎么联系
  16. html如何让图片背景透明,html – 如何让我的网站的背景透明,而不使内容(图像和文字)也是透明的?...
  17. 对Tabular方法的总结
  18. x射线微型计算机断层扫描技术,X射线断层扫描技术,分析缺陷对性能影响的利器...
  19. uniapp跳转指定小程序
  20. Java Apache POI 小记(读取Word通过模板创建PPT)

热门文章

  1. 开发第一个C程序的步骤
  2. windows串口通信CreateFile
  3. idea创建module项目
  4. 强网杯2021 pwn部分wp
  5. Win10 Windows Defender 删不掉的1个威胁
  6. 论「版本号」的正确使用方式
  7. 无线ap与无线路由器的区别
  8. clock子系统的总结
  9. 【毕业设计】基于springboot医院信管系统
  10. OpenJudge 1.7.13