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        # 执行迁移

如下图所示:

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

其中:

  • dependencies:其他依赖的迁移;

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

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

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

当我们的模型类在迁移后进行了修改,在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

如下图所示:

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

  • 选项1:自己手动加默认值;

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

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

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

删除迁移

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

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

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

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

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

公众号:白巧克力LIN

该公众号发布Python、数据库、Linux、Flask、Django、自动化测试、Git、算法、前端、服务器等相关文章!

- END -

  • 15
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白巧克力LIN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值