# exclude排除
# 返回结果为queryset类型数据,通过objects控制器可以调用,queryset类型数据也能调用
# obj_list = models.Book.objects.exclude(id=2)
# obj_list = obj_list.filter(title='少年阿宾1')
# obj_list = obj_list.all()
# obj_list = models.Book.objects.exclude(id=2).filter(title__contains='少年').exclude(id=5)
# order_by 排序
# 返回结果为queryset类型数据,queryset类型数据可以调用这个方法
# obj_list = models.Book.objects.all().order_by('-id') #-id加个-号表示按照该字段降序排列, desc asc
# '''select * from app01_book order by id desc;'''
# obj_list = models.Book.objects.all().order_by('price', '-id') #按照价格升序排列,价格相同的按照id降序排列
# reverse()
# 翻转必须在排序数据的基础上
# 返回结果为queryset类型数据,queryset类型数据可以调用这个方法
# obj_list = models.Book.objects.all().order_by('-id').reverse()
# count
# queryset类型数据可以调用这个方法,返回值为数字
# obj_list = models.Book.objects.all().count()
# first\last
# queryset类型数据可以调用这个方法,返回值为模型类对象
# obj_list = models.Book.objects.all().first()
# obj_list = models.Book.objects.all()[0]
# obj_list = models.Book.objects.all().last()
# exists
# 判断查询结果是有数据
# queryset类型数据可以调用这个方法
# obj_list = models.Book.objects.all().exists() #判断是否有数据的效率高,只找一条记录 limit 1
# values
# 可以获取指定字段数据
# objects可以调用, queryset也能调用,返回结果还是queryset,内容为一个个字典数据
# obj_list = models.Book.objects.values('title', 'price')
# obj_list = models.Book.objects.filter(id=5).values('title', 'price')
# values_list
# 可以获取指定字段数据,返回结果还是queryset,内容为一个个元组数据
# obj_list = models.Book.objects.values_list('title', 'price')
# obj_list = models.Book.objects.filter(id=5).values_list('title', 'price')
# distinct 去重
# 一般配合values和values_list来使用
obj_list = models.Book.objects.values('price').distinct()
print(obj_list)