这是我参与11月更文挑战的第2天,活动详情查看:2021最后一次更文挑战
Django-ORM详解-字段、属性、操作
常用字段类型
CharField:字符类型,必须提供max_length参数,max_length表示字符长度。
Email Field:邮箱类型,实际上是字符类型,只是提供了邮箱格式检验。
Text Field:文本类型,存储大段文本字符串。字符串如果超过254 个字符建议使用Text Field。
Integer Field:整数类型。
Date Field:日期字段。
Time Field:时间字段。
Date Time Field:日期时间字段,合并了日期字段与时间字段。
File Field:实际上是字符串类型,用来把上传的文件的路径保存在数据库中。
Image Field:实际上是字符串类型,用来把上传的图片的路径保存在数据库中。
1 | python复制代码name=models.Char Field(max_length=32,verbose_name='姓名') |
常用字段属性
db_index:db_index=True表示设置此字段为数据库表的索引。
title = models.Char Field(max_length=32, db_index=True)
unique:unique=True表示该字段在数据库表中不能有重复值。
default:设置字段默认值,如default=’good’。
auto_now_add:Datetime Field、Date Field、Time Field 这3 种字段的独用属性, auto_now_add=True表示把新建该记录的时间保存为该字段的值。
auto_now:Datetime Field、Date Field、Time Field这3种字段的独用属性,auto_now= True表示每次修改记录时,把当前时间存储到该字段。
ORM基本数据操作
增加记录
方式一:
1 | python复制代码new_emp= models.employee.objects.create(name="tom",email="tom@163.com",dep_id=66) |
方式二:
1 | python复制代码new_emp= models.employee (name="tom",email="tom@163.com",dep_id=66) |
删除记录
用filter()过滤出符合条件的记录后调用delete()删除
1 | python复制代码models. employee.objects.filter(name= "张三").delete() |
修改记录
将指定条件的记录更新,并更新指定字段的值
1 | python复制代码models.employee.objects.filter(name='tom').update(email="tom2@163.com") |
修改单条数据
1 | python复制代码obj = models.employee.objects.get(id=66) |
查询
获取全部
1 | python复制代码Emp_list= models.employee.objects.all() |
获取单条数据,数据不存在则报错
1 | python复制代码Emp=models.employee.objects.get(id=123) |
获取指定条件的记录集
1 | python复制代码Emp_group=models. employee.objects.filter(name= "张三") |
Django ORM数据操作常用函数
all()函数,返回符合条件的全部记录。
1 | python复制代码objects = models.employee.objects.all() |
filter()函数,返回指定条件的记录。filter后面的括号内为过滤条件,类似于SQL中语句where后面的条件语句。
1 | python复制代码objects = models.employee.objects.filter(name='tom') |
1 | python复制代码# 获取name字段包含“Tom”的记录 |
order_by()函数,按照order_by后面括号中的字段排序。
1 | python复制代码objects =models.employee.objects.exclude(name='tom').order_by('name','id') |
distinct()函数,去掉记录集合中完全一样的记录(重复记录),然后返回这个记录集。
1 | python复制代码objects = models.employee.objects.filter (name='tom').distinct() |
其他函数
values()函数,返回一个字典类型序列。
1 | python复制代码objects = models.employee.objects.values('id','name','email') |
values_list()函数,返回一个元组类型序列。
1 | python复制代码objects = models.employee.objects.values_list('id','name','email') |
get()、first()、last()返回单个对象,可以理解为返回数据表中的一条记录。
1 | python复制代码# 返回id为1的记录,括号内是过滤条件 |
本文转载自: 掘金