查询API

  (1) all() :查询所有结果         调用者:objects管理器 返回queryset

ret=Book.objects.all()
print(ret) # <QuerySet [<Book: GO>, <Book: linux>, <Book: 北京折叠>, <Book: 三体>, <Book: 追风筝的人>, <Book: 乱世佳人>]

  (2) filter() :   它包含了与所给筛选条件相匹配的对象          调用者:objects管理器 返回queryset

 # filter 方法:返回值queryset
ret=Book.objects.filter(title="linux",price=111)
print(ret) # <QuerySet [<Book: linux>]>

  (3) get方法():  返回与所给筛选条件相匹配的对象,返回结果有且只有一        调用者:objects管理器 返回查询到model对象 (注意:查询结果有且只有一个才执行)

# get方法:返回查询到model对象
ret=Book.objects.get(price=111)
ret=Book.objects.get(title="linux")
print(ret.title) # linux

  (4) first(),last()方法:     返回第一条记录和返回最后一条记录      调用者:queryset 返回model对象

#  first() last()方法:queryset调用    返回model对象
 fbook=Book.objects.all()[0]
 fbook=Book.objects.all().first()
 lbook=Book.objects.all().last()

  (5) exclude():  它包含了与所给筛选条件不匹配的对象     调用者:objects管理器 返回queryset

#exclude:返回值一个queryset
ret=Book.objects.exclude(price=111)
print(ret)

  (6) order_by():    对查询结果排序      由queryset对象调用,返回值是queryset

# order_by:排序  由queryset对象调用,返回值是queryset
 ret=Book.objects.all().order_by("-price","-nid").first()
 print(ret)

  

  (7) count :    数数      由queryset对象调用 返回int

#  count :数数  :由queryset对象调用 返回int
ret=Book.objects.all().count()
print(ret)

  (8) reverse():  对查询结果反向排序     由queryset对象调用,返回值是queryset

 # reverse():由queryset对象调用,返回值是queryset
Book.objects.all().order_by("price").reverse()

  (9) exists():   如果QuerySet包含数据,就返回True,否则返回False    由queryset对象调用 返回值布尔值

#  exists: 由queryset对象调用 返回值布尔值
is_exist=Book.objects.all().exists()
if is_exist:
     print("OK")

  (10)values()方法:    由queryset对象调用,返回值是queryset     一个可迭代的字典序列

#  values方法:由queryset对象调用,返回值是queryset
 ret=Book.objects.all().values("title","price") # queryset [{"title":"linux"},{"title":"python"},...]
 print(ret) # <QuerySet [{'title': 'GO'}, {'title': 'linux'}, {'title': '北京折叠'}, {'title': '三体'}, {'title': '追风筝的人'}, {'title': '乱世佳人'}]>

'''
 ret=[]
 for obj in Book.objects.all():
    temp={
        "title":obj.title
        "price":obj.price
    }
    ret.append(temp)

 '''

  (11)values_list():由queryset对象调用,返回值是queryset         一个元组序列

#  values_list:由queryset对象调用,返回值是queryset
ret=Book.objects.all().values_list("title","price")
print(ret) # <QuerySet [('GO',), ('linux',), ('北京折叠',), ('三体',), ('追风筝的人',), ('乱世佳人',)]>

  (12)distinct():   从返回结果中剔除重复纪录    由queryset对象调用,返回值是queryset

 

 

 

 #distinct: 由queryset对象调用,返回值是queryset
ret=Book.objects.all().values("title").distinct()
print(ret)

基于双下划线的模糊查询  

 

in是三者之中的任意一个
Book.objects.filter(price__in=[100,200,300])
gt是大于
Book.objects.filter(price__gt=100)
it是小于
Book.objects.filter(price__lt=100)
range是在这个数之间
Book.objects.filter(price__range=[100,200])
contains是只要包含在其中
Book.objects.filter(title__contains="python")
icontains是不区分大小写只要包含在其中
Book.objects.filter(title__icontains="python")
startswith是以"py"开头的
Book.objects.filter(title__startswith="py")
时间
Book.objects.filter(pub_date__year=2012)

 

#查询价格大于200的书籍
ret=Book.objects.filter(price__gte=200)
print(ret)

    # 查询书籍名称以py开头的所有的书籍名称
ret=Book.objects.filter(title__istartswith="py").values("title")
ret=Book.objects.filter(title__contains="p").values("title")
print(ret) # <QuerySet [{'title': 'pycharm'}, {'title': 'python'}]>

    # 查询2017年7月份的所有的书籍
    ret=Book.objects.filter(pub_date__year=2017,pub_date__month=7)
print(ret)