SpringBoot對靜態資源的對映規則
阿新 • • 發佈:2020-11-22
book = BookInfo.objects.get(btitle='⻄遊記') #單⼀查詢,如果結果不存在報錯 book = BookInfo.objects.all(btitle='⻄遊記') #查詢多個結果,有多少返回多少,不存在返回None book = BookInfo.objects.filter(btitle='⻄遊記').count() #查詢結果的數量 book = BookInfo.objects.exclude(btitle='⻄遊記') #查詢結果取反
book = BookInfo.objects.filter(btitle__contains='記') #查詢結果包含‘記’ %記%
book = BookInfo.objects.filter(btitle__startswith='⻄') #查詢以‘⻄’開頭的 ⻄% book = BookInfo.objects.filter(btitle__endswith='記') #查詢以‘記’結尾的 %記
空查詢:
isnull 是否為空
range 相當於between...and...
book = BookInfo.object.filter(id__in = [1,5,13,24]) #查詢id為1或5或13或24 book= BookInfo.object.filter(id__range = [10,20]) #查詢範圍為10-20的id
book = BookInfo.object.filter(id__gt =10) #查詢id⼤於10的 book = BookInfo.object.exclude(id = 10) #查詢id不等於的10的
F物件和Q物件
⽐較兩個欄位物件之間的關係⽤F物件。(F物件可以進⾏運算)
book = BookInfio.Object.filter(bread__gte=F('bcomment')) #查詢閱讀量等 於評論量的物件 book = BookInfio.Object.filter(bread__gte=F('bcomment') * 2 )
與邏輯運算子連⽤使⽤Q物件。 或( | ) 與( & ) ⾮( ~ )
book = BookInfo.Object.filter(Q(bread__gte=20) | Q(pk__lt=3)) #查詢閱讀量為20或者id為3的物件
聚合函式
使⽤aggregate()過濾器調⽤聚合函式。聚合函式包括:Avg 平均,Count 數量,Max 最⼤,Min 最⼩,Sum 求和
book = BookInfo.Object.aggregate(Sum('bread')) #求閱讀量的和
排序
使⽤order_by對結果進⾏排序
book=BookInfo.object.all().order_by('bread') #按閱讀量的升序排列 book=BookInfo.object.all().order_by('-bread') #按閱讀量的降序排列
關聯查詢
b = BookInfo.object.filter(id = 1) b.heroinfo_set.all() #查詢book_id = 1的書⾥的所有英雄
(⼀本書⾥有多個英雄,⼀個英雄只能存在⼀本書⾥。表關係為⼀對多,英雄表⾥外來鍵關聯書
id,英雄表⾥的存放多個書id。英雄表為多,書表為⼀。)
多到⼀的訪問語法:多對應的模型類物件.多對應的模型類中的關係類屬性名
h = HeroInfo.object.filter(id = 1) h.hbook #查詢英雄id = 1的書是哪本。
⽅向查詢除了可以使⽤模型類名_set,還有⼀種是在建⽴模型類的時候使⽤related_name來指定變數名。
hbook=model.ForeignKey(HeroInfo,on_delete=model.CACADE,null=Ture,related_name='heros') b.herose.all()
多對多操作
增加
class ManyToManyTest(APIView): def post(self, request): # ⽅法⼀:在建⽴manytomany的models⾥新增資料,(⼀條,⼀個物件) # teacherobj = models.Teacher.objects.filter(id=1).first() # studentobj = models.Student.objects.filter(id=2).first() # teacherobj.stu.add(studentobj) # return Response({ # "status": 200 # }) #⽅法⼆:在未建⽴manytomany的models⾥新增資料,(⼀條,⼀個物件) teacherobj = models.Teacher.objects.all() studentobj = models.Student.objects.filter(id=2).first() studentobj.teacher_set.add(*teacherobj) return Response({ "status": 200 })
刪除
class ManyToManyTest(APIView): def delete(self, request): # ⽅法⼀:在建⽴manytomany的models⾥刪除資料,(⼀條,⼀個物件) # teacherobj = models.Teacher.objects.filter(id=1).first() # studentobj = models.Student.objects.filter(id=2).first() # teacherobj.stu.remove(studentobj) # return Response({ # "status": 200 # }) #⽅法⼆:在未建⽴manytomany的models⾥刪除資料,(多條,可迭代物件) teacherobj = models.Teacher.objects.all() studentobj = models.Student.objects.filter(id=2).first() studentobj.teacher_set.remove(*teacherobj) return Response({ "status": 200 })
修改
class ManyToManyTest(APIView): def put(self, request): # ⽅法⼀:在建⽴manytomany的models⾥修改資料,引數只能是可迭代物件 teacherobj = models.Teacher.objects.filter(id=3).first() studentobj = models.Student.objects.filter(id=2) teacherobj.stu.set(studentobj) return Response({ "status": 200 }) #⽅法⼆:在未建⽴manytomany的models⾥修改資料,引數只能是可迭代物件 # teacherobj = models.Teacher.objects.all() # studentobj = models.Student.objects.filter(id=2).first() # studentobj.teacher_set.set(*teacherobj) # return Response({ # "status": 200 # })
檢視
class ManyToManyTest(APIView): def get(self, request): # ⽅法⼀:在建⽴manytomany的models⾥查資料 # teacherobj = models.Teacher.objects.get(id=2) # data = teacherobj.stu.all() # data_list = [] # for i in data: # data_dic={ # "student_name":i.name, # "teacher_name":teacherobj.name # } # data_list.append(data_dic) # return Response(data_list) # ⽅法⼆:在未建⽴manytomany的models⾥查資料 studentobj = models.Student.objects.get(id=2) data = studentobj.teacher_set.all() data_list = [] for i in data: data_dic = { "student_name": studentobj.name, "teacher_name": i.name } data_list.append(data_dic) return Response(data_list)