Django学习记录-2-Model
Django Model
ORM
Django 模型使用自带的 ORM。
对象关系映射(Object Relational Mapping,简称 ORM )用于实现面向对象编程语言里不同类型系统的数据之间的转换。
ORM 在业务逻辑层和数据库层之间充当了桥梁的作用。
ORM 是通过使用描述对象和数据库之间的映射的元数据,将程序中的对象自动持久化到数据库中。
使用 ORM 的好处:
- 提高开发效率。
- 不同数据库可以平滑切换。
使用 ORM 的缺点:
- ORM 代码转换为 SQL 语句时,需要花费一定的时间,执行效率会有所降低。
- 长期写 ORM 代码,会降低编写 SQL 语句的能力。
ORM 解析过程:
- 1、ORM 会将 Python 代码转成为 SQL 语句。
- 2、SQL 语句通过 pymysql 传送到数据库服务端。
- 3、在数据库中执行 SQL 语句并将结果返回。
ORM 对应关系表:
以上源自菜鸟教程↑
一个模型类在数据库中对应一张表,在模型类中定义的属性,对应该模型对照表中的一个字段
模型字段的定义
字段类型
AutoField():一个IntegerField,根据可用ID自动递增。如果没指定主键,就创建它自动设置为主键。
IntegerField():一个整数;
CharField(max_length = None):字符串字段
DateField(auto_now=False, auto_now_add=False):日期
TextField():一个很长的的文本字段
BooleanField():布尔字段;
OneToOneField(to, on_delete, parent_link = False):一对一
ForeignKey(to, on_delete):一对多
ManyToManyField(to):多对多
FileField(upload_to=‘uploads/‘) 上传文件,
ImageField() 保存图像文件,自动判断是否为图像
字段参数
null:如果设置为True,当该字段为空时,Django会将数据库中该字段设置为NULL,默认为False 。尽量避免将此参数设为True
blank:如果设置为True,该字段允许为空。默认为False。
default:该字段的默认值。可以是一个值或者是个可调用的对象,如果是个可调用对象,每次实例化模型时都会调用该对象。
db_column: 定义当前字段在数据表中的列名,未指定则使用字段名作为列名
primary_key:如果设置为 True ,将该字段设置为该模型的主键。
editable:如果设为False,那么当前字段将不会在admin后台或者其它的ModelForm表单中显示,同时还会被模型验证功能跳过。参数默认值为True。
unique:如果设置为 True,在整个数据表内该字段数据不可重复
CRUD
CRUD部分基于下方代码
from django.db import models class Student(models.Model): s_name = models.CharField(max_length=20) s_age = models.IntegerField(default=18)
新增
Student.objects.create(s_name=‘Tom‘)
stu=Student(s_name=‘Tom‘) stu.save()
stu=Student() stu.s_name=‘Tom‘ stu.save()
Student.objects.get_or_create(s_name=‘Tom‘) # 先查询再创建,返回一个元组:(object,True/False)
查询
更新
删除
模型过滤
Django通过模型的objects对象实现模型数据查询
.filter() 返回符合筛选条件的数据集
.exclude() 返回不符合筛选条件的数据集
.all() 返回所有的数据
.order_by() 排序
.values() 返回一个列表。列表中每个元素都是 一个字典