Django中的模型层

模型层的了解

大家都知道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界面上的显示名称。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值