做购物网站多少钱 知乎,广州 营销型网站建设,厦门网站建设要多少钱,十大室内设计师排名教程源码#xff1a;z991/django_turital在日常开发中#xff0c;数据库的增删改查#xff08;CDUR#xff09;中#xff0c;查询需求偏多#xff0c;所以查询的语法比增删改操作多得多#xff0c;尤其是跨表关联查询#xff0c;可以让代码精简很多年。直接上代码吧z991/django_turital 在日常开发中数据库的增删改查CDUR中查询需求偏多所以查询的语法比增删改操作多得多尤其是跨表关联查询可以让代码精简很多年。 直接上代码吧我是直接在上次写的的视图函数中改写的。def orm_test(request):增加操作# 新增一个名字为1901的一个班级,create是新增方法里面可以接受多个字段参数# Class.objects.create(name1901)# 同时新增一个学生和班级操作# 新增一个班级名称为1903的班级返回一个班级实例# cls_instance Class.objects.get(name1903)# stu_info左边的key要和Student模型字段对应上因为cls是外键所以要对应一个班级的实例# stu_info {# name:XIAOmei,# age: 24,# score:88,# email: 1333qq.com,# introduce: 假如你是xiaomei,# cls: cls_instance# }# Student.objects.create(**stu_info)修改操作# 将名字为1901的班级名称改为1901_xiufilter为过滤支持多个参数update是更新方法支持多个参数# Class.objects.filter(name1901).update(name1901_xiu)删除操作# 将名字为1901_xiu的班级删除掉delete是删除方法# Class.objects.filter(name1901_xiu).delete()查询操作# 查询单条,get返回实例如果查询结果没有回报错# filter查询返回的结果是多个实例的列表,# instance Student.objects.get(pk1)#instance Student.objects.filter(pk1).first()# 查询多条,返回queryset类型(多个查询结果实例的列表) 可以被迭代# queryset Student.objects.all() ## for stu in queryset:#学生的姓名 学生的年龄 学生的分数# print(stu.name,stu.age,stu.score)#对查询集结果进行切片取第0个到第4个和列表的切片一样# queryset Student.objects.filter().all()[:5] # limit 语句# print(queryset.query) # 返回执行的sql语句# 精准查找 两条语句作用一样查询姓名位小美的学生结果返回查询集# queryset Student.objects.filter(name小美)# queryset Student.objects.filter(name__exact小美)# 忽略大小写# queryset Student.objects.filter(name__iexactxiaomei)# 模糊查询# queryset Student.objects.filter(name__containsxiao) # 不忽略大小写# queryset Student.objects.filter(name__icontainsxiao) # 忽略大小写# 正则匹配法# queryset Student.objects.filter(name__regex^x)# queryset Student.objects.filter(name__iregex^x)# 大于 小于# queryset Student.objects.filter(age__gt17, age__lt19)# in 一个集合中的所有# queryset Student.objects.filter(age__in(18,17,16))# queryset Student.objects.all().order_by(age) 升序# queryset Student.objects.all().order_by(-age) #升序# queryset Student.objects.all().order_by(-age,id) #升序# for stu in queryset:# print stu.age,stu.id# 指定字段查询# 第一种# queryset Student.objects.values(name,age).all()# 第二种# queryset Student.objects.values_list(name,age,score).all()# 连表查询# 第一种# queryset Student.objects.all()# for stu in queryset:# print stu.name,stu.cls.id,stu.cls.name# 第二种 : 牛逼的双下划线(跨表)可以用多个双下划线跨多张表# 语句功能是查询学生表中所有学生的姓名和学生所在班级的名称# cls__name 是cls双下划线name,cls 是Student中的cls字段name是班级表中的name字段# queryset Student.objects.values(name,cls__name).all()# 查询一个班级所有学生执行两次sql语句# cls1 Class.objects.get(name1701)# queryset Student.objects.filter(clscls1)# 查询一个班级所有学生执行一次sql语句# queryset models.Student.objects.filter(cls__name1903).all().values(name,cls__name)# 查询一个班级所有学生起始表从班级表开始查询,反向查询# stu_cls 是学生表中外键的别名# queryset Class.objects.get(name1903).stu_cls.all()# 按照分数查询 大于90分# queryset Student.objects.filter(score__gt90).all()return HttpResponse(数据库操作成功)