Django_study_day10:模型类

ORM框架

  • Object:对象-类
  • Relation:关系,关系数据中的表
  • Mapping:映射

通过类和对象操作对应的数据表,不需要写sql语句
Django中内嵌了ORM框架,ORM框架可以将类和数据表进行对应起来,只需要通过类和对象就可以对数据表进行操作

设计类:模型类
ORM另外一个作用:根据设计的类生成数据库中的表

模型类设计
在应用models.py中设计模型类
必须继承于models.Model类

模型类生成表
1)生成迁移文件

python manage.py makemigrations

2)执行迁移生成表

python manage.py migrate

定义属性

Django根据属性的类型确定以下信息:
当前选择的数据库支持字段的类型
渲染管理表单时使用的默认html控件
在管理站点最低限度的验证
django会为表创建自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后django不会再创建自动增长的主键列

注意:pk是主键的别名,若主键名为id2,那么pk是id2的别名

属性命名限制:
不可以使用pyhon关键字
不许连续使用_
定义属性时需要指定字段类型,通过字段类型的参数指定选项,语法如下:属性名=models.字段类型(选项)

字段类型:
使用时需要引入django.db.models包,字段类型如下:
AutoField 自动增长的IntegerField,不用指定,会自动创建属性名为id的自动增长属性
BooleanField 布尔字段,值为True或False
NullBooleanField 支持Null、True、False三种值
CharField(max_length=最大值)字符串,参数max_length表示最大字符个数 必须添加
TextField 大文本字段,超过4000字符的时候使用
IntegerField 整数
DecimalField(max_digits=None, decimal_places=None) 十进制浮点数,参数max_digits表示总位数,参数decimal_places表示小数的位数
FloatField 浮点数,参数同上 但是不稳定 一般取精确值的时候不用FloatField
DateField(auto_now=False/auto_now_add=False) 第一个参数表示最后一次修改的时间 第二个参数表示创建的时间 两者互斥不可以同时使用
TimeField 时间,参数同DateField
DateTimeField 日期时间,参数同DateField
FileField 上传文件字段 upload_to 上传路径
ImageField 继承于FileField对上传的内容进行校验,确保是有效的图片

通过选项实现对字段的约束,选项如下:
default 设置默认值
primary_key 若为True,则该字段会成为模型的主键字段,默认是False,一般作为AutoField的选项使用
unique 如果为True,这个字段在表中必须是唯一的,默认是False
db_index 若值为True,则在表中会为此字段创建索引,默认值是False
db_column 字段的名称,如果未指定,则使用属性的名称
null 若为True,表示允许为空,默认值是False
blank 若为True,则该字段允许为空白,默认值是False

注意:null是数据库范畴的概念,blank是后台管理页面表单验证范畴的

接下来让我们尝试着练一段shell命令:

进入项目shell的命令:
pyhton manage.py shell

导入图书类
from booktest.models import BookInfo
创建实例对象
b = BookInfo()
添加书名
b.btitle = "天龙八部"
导入时间函数
from datetime import date
添加出版时间
b.bpub_date = date(19901,1)
保存
b.save()
获取图书类信息
b2 = BookInfo.objects.get(id=1)
查看类型
type(b2)
>>><class 'booktest.models.BookInfo'>
获取书名
b2.btitle
获取出版时间
b2.bpub_date
获取id
b2.id
修改出版时间
b2.bpuv_date=date(1990,10,10)
保存
b2.save()
删除指定信息
b2.delete()

查询和图书相关联的信息
对象名.对应的多类对象的信息_set.all(),返回一个列表
b.heroinfo_set.all()
查询和多类相关的一类的信息
对象名.hbook.一类的属性

查询图书表里面的所有内容
BookInfo.objects.all()
HeroInfo.objects.all()
weixin063传染病防控宣传微信小程序系统的设计与实现+springboot后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值