数据的增,删,改,查
创建一个汽车模型
#导包
from django.db import models
# 汽车模型
class Car(models.Model):
# 品牌
brand=models.CharField(max_length=50)
# 销量
number=models.IntegerField()
# 元选项
class Meta:
# 重命名
db_table = '汽车表'
Postman中操作
添加数据: (post)
先在Postman中将数据传递给后端
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ct5v1138-1612189308731)(D:\作业\python\P4\笔记\image\day06\添加数据.jpg)]
from .models import *
class demo1(View):
# 添加数据
def post(self,request):
# 从postman中传递数据过来,定义属性获取数据
brand=request.POST.get('brand')
number=request.POST.get('number')
# 创建汽车实例
car=Car()
# 给属性/字段赋值
car.brand=brand
car.number=number
# 保存
car.save()
return HttpResponse('添加成功')
查找数据:(get)
-
查询所有数据:all
语法:模型类名.objects.all() # all 查到的结果为一个列表,列表中为object对象 例:查询汽车模型类中的所有信息 car_li = Car.objects.all()
-
条件查询:get
语法:模型类名.objects.get(字段名='条件') # get 查询结果为对象,若结果不存在,或者存在多个结果就报错,所以 get 查询的结果只有一条 例:查询汽车模型类中的法拉利信息 car_li = Car.objects.get(brand='法拉利')
-
过滤(条件)查询:filter
语法:模型类名.objects.filter(字段名='条件') # filter 查询到的结果为一个列表,可以存在多个结果,列表中为object对象 例:查询汽车模型类中的所有宝马信息 car_li = Car.objects.filter(brand='宝马')
filter的方法和使用
-
查询第几条数据:first
语法:模型类名.objects.filter(字段名='条件').first(数据序号) 模型类名.objects.filter(字段名='条件')[数据序号] # 注意:first必须要跟在filter后面 first查询到的结果只有一条 例:查询兰博基尼的第二条属性 car = Car.objects.filter(brand='兰博基尼').first(2)
-
匹配某个字符:contains
语法:模型类名.objects.filter(字段名__contains='字符') # contains表示包含,用来进行相似查询,表示只要字段值中有指定字符串就满足条件 例:查询汽车名称中查询包含“法”字 car = Car.objects.filter(brand__contains='法')
-
匹配某个字符:icontains
用法同contains一样,只不过是忽略大小写
-
匹配开头:startswith
语法:模型类名.objects.filter(字段名__startswith='字符') # startswith表示以某个字符串开头去匹配查找 例:查询汽车名称中查询以“兰”字开头的信息 car = Car.objects.filter(brand__startswith='兰')
-
集合查询:in
语法:模型类名.objects.filter(字段名__in=['值1','值2']) # in表示指定一个集合,只要字段值在这个集合内就满足查询条件 例:查询法拉利和兰博基尼的所有信息 car = Car.objects.filter(brand__in=['法拉利','兰博基尼'])
-
根据条件表达式 进行 大于 等于 小于查找
表达式 解释 lt 小于 gt 大于 lte 小于等于 gte 大于等于 语法:模型类名.objects.filter(字段名__表达式=数值) 例:查询汽车销量大于2000的信息 car = Car.objects.filter(number__gt=2000)
-
-
排序:order_by
语法:模型类名.objects.all().order_by('字段名') # order_by用来表示 对结果集进行排序。可以是根据一个或多个字段排序,默认是正序,如果要倒 序可以在字段前加"-" 例:根据汽车销量进行排序查询 car = Car.objects.all().order_by('number')
-
返回指定字段的值:values
语法:模型类名.objects.all/order_by/filter/().values('字段名1','字段名2') # values 表示只需要返回指定字段的值,不需要整个Model实例 例:查询表中所有字段 car = Car.objects.all().values('brand','number')
修改数据:(put)
在修改数据之前需要在前端浏览器上传递数据,作为修改的条件(只能用这个方法!!!)
def put(self, request):
# 1. 接收前端传递的数据
id = request.GET.get('id')
# 2. 查到这条记录
car_li = Car.objects.filter(id=id)
car = car_li[0]
# 3. 重新赋值
car.brand = '宝马x5'
car.num = 8000
# 4. 保存
car.save()
# 先把响应写出来:有请求,一定要有响应
return HttpResponse('修改成功')
删除数据:(delete)
和修改的一样,都需要在前端传递数据,作为删除条件(只能用这个方法!!!)
def delete(self,request)
# 获取要删除得条件
id = request.GET.get('id')
# 2. 查到要删除的对象
car_li = Car.objects.filter(id=id)
# 3. 删除
car_li.delete() # 调用列表的删除方法
# car_li[0].delete() # 调用object对象的删除方法
return HttpResponse('删除成功')
GET.get(‘id’)
# 2. 查到要删除的对象
car_li = Car.objects.filter(id=id)
# 3. 删除
car_li.delete() # 调用列表的删除方法
# car_li[0].delete() # 调用object对象的删除方法
return HttpResponse('删除成功')