- exclude()
exclude()
方法用于查询不符合条件的数据,同样返回QuerySet
数据类型,实例:
# -*- coding: utf-8 -*- from django.shortcuts import render,HttpResponse from app1_model import models def add_book(request): #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10") books = models.Book.objects.exclude(publish="金庸出版社") for i in books: print(i.title) #print(books,type(books)) return HttpResponse('<p>查找成功!</p>')
- 访问测试
- get()
get()
方法用于查询符合条件的返回模型类的对象,符合条件的对象只能有一个,如果符合筛选条件的对象超过一个或者没有,都会抛出错误,实例:
# -*- coding: utf-8 -*- from statistics import mode from django.shortcuts import render,HttpResponse from app1_model import models def add_book(request): #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10") #三个查询代码依次执行 books = models.Book.objects.get(pk=2) #books = models.Book.objects.get(pk=5) #books = models.Book.objects.get(price=200) print(books,type(books)) return HttpResponse('<p>查找成功!</p>')
- 访问测试
# -*- coding: utf-8 -*- from statistics import mode from django.shortcuts import render,HttpResponse from app1_model import models def add_book(request): #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10") #books = models.Book.objects.get(pk=2) books = models.Book.objects.get(pk=5) #books = models.Book.objects.get(price=200) print(books,type(books)) return HttpResponse('<p>查找成功!</p>')
访问测试,发现报错,这是因为主键id没有等于5的
# -*- coding: utf-8 -*- from statistics import mode from django.shortcuts import render,HttpResponse from app1_model import models def add_book(request): #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10") #books = models.Book.objects.get(pk=2) #books = models.Book.objects.get(pk=5) books = models.Book.objects.get(price=200) print(books,type(books)) return HttpResponse('<p>查找成功!</p>')
- 访问测试,因为
price字段等于200的有两条数据
,返回了两个,所以报错了
- order_by()
order_by()
方法用于对查询结果进行排序,返回QuerySet
类型数据- 注意:
- 参数的字段名要加引号
- 降序是在字段前面加一个杠
-
- 实例:
# -*- coding: utf-8 -*- from statistics import mode from django.shortcuts import render,HttpResponse from app1_model import models def add_book(request): #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10") books = models.Book.objects.order_by("price") #books = models.Book.objects.order_by("-price") print(books) for i in books: print(i.price) return HttpResponse('<p>查找成功!</p>')
- 访问测试
# -*- coding: utf-8 -*- from statistics import mode from django.shortcuts import render,HttpResponse from app1_model import models def add_book(request): #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10") #books = models.Book.objects.order_by("price") books = models.Book.objects.order_by("-price") print(books) for i in books: print(i.price) return HttpResponse('<p>查找成功!</p>')
- 访问测试
- reverse()
reverse()
方法用于对查询结果进行反转,返回QuerySet
数据类型,实例:
# -*- coding: utf-8 -*- from statistics import mode from django.shortcuts import render,HttpResponse from app1_model import models def add_book(request): #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10") #books = models.Book.objects.order_by("price") books = models.Book.objects.order_by("-price").reverse() print(books) for i in books: print(i.price) return HttpResponse('<p>查找成功!</p>')
访问测试
# -*- coding: utf-8 -*- from statistics import mode from django.shortcuts import render,HttpResponse from app1_model import models def add_book(request): #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10") books = models.Book.objects.order_by("price").reverse() #books = models.Book.objects.order_by("-price").reverse() print(books) for i in books: print(i.price) return HttpResponse('<p>查找成功!</p>')
访问测试
- count()
count()
方法用于查询数据的数量,返回的是整数,实例:
# -*- coding: utf-8 -*- from statistics import mode from django.shortcuts import render,HttpResponse from app1_model import models def add_book(request): #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10") books = models.Book.objects.count() #books = models.Book.objects.filter(price=200).count() print(books) return HttpResponse('<p>查找成功!</p>')
- 访问测试
- 也可以统计条件查询的数据量
# -*- coding: utf-8 -*- from statistics import mode from django.shortcuts import render,HttpResponse from app1_model import models def add_book(request): #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10") #books = models.Book.objects.count() books = models.Book.objects.filter(price=200).count() print(books) return HttpResponse('<p>查找成功!</p>')
- 访问测试
- first()
first()
方法返回第一条数据,返回的数据是模型类
的对象,可以使用索引下标[0]
,实例:
# -*- coding: utf-8 -*- from statistics import mode from django.shortcuts import render,HttpResponse from app1_model import models def add_book(request): #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10") books = models.Book.objects.first() print(books) return HttpResponse('<p>查找成功!</p>')
- 访问测试
- 同样可以应用在条件查询上
# -*- coding: utf-8 -*- from statistics import mode from django.shortcuts import render,HttpResponse from app1_model import models def add_book(request): #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10") books = models.Book.objects.filter(price=300).first() print(books) return HttpResponse('<p>查找成功!</p>')
- 访问测试
- last()
last()
方法和first()
相反,返回最后一条数据- 注意:
不能使用下标索引
[-1]
,因为ORM没有逆向索引
- 实例:
# -*- coding: utf-8 -*- from statistics import mode from django.shortcuts import render,HttpResponse from app1_model import models def add_book(request): #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10") books = models.Book.objects.filter(price=200).last() print(books) books = models.Book.objects.last() print(books) return HttpResponse('<p>查找成功!</p>')
访问测试
- exists()
exists()
方法用于判断查询结果中是否有数据,返回的布尔值,有数据为True,没有则是False
注意:判断的数据类型只能是QuerySet
数据类型,不能是整型或者模型类对象- 实例:
# -*- coding: utf-8 -*- from statistics import mode from django.shortcuts import render,HttpResponse from app1_model import models def add_book(request): #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10") books = models.Book.objects.exists() #books = models.Book.objects.count().exists() #books = models.Book.objects.first().exists() print(books) return HttpResponse('<p>查找成功!</p>')
访问测试,存在数据,并且数据类型为QuerySet
# -*- coding: utf-8 -*- from statistics import mode from django.shortcuts import render,HttpResponse from app1_model import models def add_book(request): #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10") #books = models.Book.objects.exists() books = models.Book.objects.count().exists() #books = models.Book.objects.first().exists() print(books) return HttpResponse('<p>查找成功!</p>')
访问测试,返回数据类型不能是int
# -*- coding: utf-8 -*- from statistics import mode from django.shortcuts import render,HttpResponse from app1_model import models def add_book(request): #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10") #books = models.Book.objects.exists() #books = models.Book.objects.count().exists() books = models.Book.objects.first().exists() print(books) return HttpResponse('<p>查找成功!</p>')
- 访问测试,返回数据类型不能是模型类对象
- values()
values()
方法用于查询部分字段的数据,返回一个QuerySet
数据类型,每条数据都是一个字典
- 注意:
- 参数的字段名称要加引号
- 想要字段名称和数据使用
values
- 实例:
# -*- coding: utf-8 -*- from statistics import mode from django.shortcuts import render,HttpResponse from app1_model import models def add_book(request): #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10") books = models.Book.objects.values("pk","price","title") #只查询指定字段,返回的QuerySet中每条数据都是一个字典 print(books[0]["price"],type(books)) for i in books: print(i) return HttpResponse('<p>查找成功!</p>')
访问测试
- values_list()
values_list()
方法用于查询部分字段的数据,返回一个QuerySet
数据类型,每条数据都是一个元组,实例:
- 注意:
- 参数的字段名称要加引号
- 想要字段名称和数据使用
values_list
# -*- coding: utf-8 -*- from statistics import mode from django.shortcuts import render,HttpResponse from app1_model import models def add_book(request): #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10") books = models.Book.objects.values_list("pk","price","title") print(books[1][2],type(books)) for i in books: print(i) return HttpResponse('<p>查找成功!</p>')
- 访问测试