Django框架——模型

在上篇文章中,我们学习了Django框架——模板,这篇文章我们学习Django框架——模型。

模型是描述、存储数据的字段和行为,一般情况下,一个模型映射一张数据库表,模型类的属性对应数据库表字段,模型的对象对应数据库表的一行数据。

字段类型

在编写模型类的属性时,需要使用字段类型,常用的字段类型如下:

类型 说明
AutoField 自动增长的IntegerField
CharField(max_length=字符长度) 字符串
TextField 大文本字段
IntegerField 整数
DecimalField(max_digits=None,decimal_places=None) 十进制浮点数,max_digits最大位数,decimal_places=小数点位数
FloatField 浮点数
BooleanField 布尔值
DateField([auto_now=False,auto_now_add=False]) 日期。auto_now每次保存时自动设置字段为当前时间;auto_now_add第一次被创建时自动设置当前时间
TimeField 时间,参数和DateField相同
DateTimeField 日期和时间,参数和DateField相同
FileField 上传文件字段
ImageField 图片文件字段,继承了FileField的所有属性和方法

大家也可以在官网查看还有哪些字段。

字段约束

在使用字段类型时,可以通过字段的参数实现对字段的约束,常用的约束有:

约束 说明
null=True 字段可以为空
blank=True 添加数据时,可以为空值,一般与null搭配使用
primary_key=True 主键
auto_now 每次保存时自动设置字段为当前时间
auto_now_add 第一次被创建时自动设置当前时间
choices 映射或可迭代对象,用作该字段的选项,主要用于后台admin下拉菜单
max_length 最大长度
default 默认值
verbose_name 可读名称,如果没有给定详细名称,Django 会使用字段的属性名自动创建,并将下划线转换为空格
name| db_column 数据库中的字段名称
unique=True 不允许重复
db_index=True 数据库索引
editable=True 在admin里是否可编辑,不可编辑则不显示

定义模型

一般来说,定义模型都是写在models.py文件中,示例代码如下:

from django.db import models

class UserModel(models.Model):
    # uid为主键
    uid = models.AutoField(auto_created=True ,primary_key=True)
    # name:CharField字符串类型,最大长度为30,唯一值,索引
    name = models.CharField(max_length=30,unique=True,db_index=True)
    # age:IntegerField整数类型,默认值为18
    age= models.IntegerField(default=18)

这里我们创建了名为UserModel的模型类,类属性有uid、name和age。

注意:当我们不设置主键时,Django会为表增加自增主键列。

迁移

编写模型后,需要执行如下代码进行迁移操作,将模型映射到数据库,

python manage.py makemigrations    # 生成迁移文件
python manage.py migrate        # 执行迁移

如下图所示:

Django框架——模型

执行生成迁移文件操作后,会在user文件夹中migrations生成名为0001_initial.py文件,文件内容如下图所示:

Django框架——模型

其中:

  • dependencies:其他依赖的迁移;
  • operations:操作,该模型做了什么操作,这里是创建了名为UserModel的数据库表,字段有name和age。

执行迁移操作后,打开db.sqlite3,如下图所示:

Django框架——模型


这样就成功编写模型并实现迁移了。

当我们的模型类在迁移后进行了修改,在models.py中添加如下示例代码:

    # sex:BooleanFieldbool类型
    sex=models.BooleanField(default=True)
    # info:TextField长字符串,大文本
    info=models.TextField(null=True,blank=True)
    # salary:FloatField浮点数
    salary=models.FloatField(default=1000000.345)
    # money:DecimalField数值,最大位数6,小数点2位
    money=models.DecimalField(max_digits=6,decimal_places=2)

修改模型列后,需要重新执行如下代码生成迁移文件:

python manage.py makemigrations

如下图所示:

Django框架——模型


假设原来的数据库已经有数据了,由于新加了列,需要给字段加默认值,所以程序就等待我们选择添加默认值的方式,其中:

  • 选项1:自己手动加默认值;
  • 选项2:退出生成迁移文件,在模型中通过default参数添加默认值;

这里我们选择选项2,并在模型类属性中添加default默认值。

设置好后,再执行迁移操作,如下图所示:

Django框架——模型


删除迁移

我们也可以通过删除迁移的方式,回到之前的迁移。

首先在数据库中找到migrations迁移数据表,如下图所示:

Django框架——模型


然后再在migrations文件夹中删除迁移文件,并修改模型类,再执行如下代码进行迁移:

python manage.py makemigrations    # 生成迁移文件
python manage.py migrate        # 执行迁移

好了,Django框架——模型就学习到这里,下篇文章我们学习Django框架——模型操作(增删改查)。

– END –


原文始发于微信公众号(白巧克力LIN):Django框架——模型

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/239363.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!