[TOC=1,5] >[success] # 四种查询方式 >[danger] ##### all返回一个QuerySet ~~~ def index(request): from cm import models obj = models.Book.objects.all() #打印内容<QuerySet [<Book: Book object>, <Book: Book object>]> print(obj) return HttpResponse('ok') ~~~ * * * * * >[danger] ##### fittler条件过滤使用,等同于sql中的where,返回的一个过滤后的QuerySet ~~~ def index(request): from cm import models obj = models.Book.objects.filter(name="python") print(obj) return HttpResponse('ok') ~~~ >[danger] ##### exclude返回一个新的QuerySet,它包含不满足查询参数的对象 ~~~ def index(request): from cm import models obj = models.Book.objects.exclude(name="python") print(obj) return HttpResponse('ok') ~~~ >[danger] ##### get只有一个对象满足你的查询,也就是查询必须且只有一个返回符合的查询语句 ~~~ def index(request): from cm import models obj = models.Book.objects.get(name="python") print(obj) return HttpResponse('ok') ~~~ >[danger] ##### 链式查询小技巧 这个例子最开始获取数据库中所有对象的一个[QuerySet](,之后增加一个过滤器,然后又增加一个排除,再之后又是另外一个过滤器。 最后的结果仍然是一个[QuerySet],它包含标题以”What“开头、发布日期在2005年1月30日至当天之间的所有记录。 ~~~ >>> Entry.objects.filter( ... headline__startswith='What' ... ).exclude( ... pub_date__gte=datetime.date.today() ... ).filter( ... pub_date__gte=datetime(2005, 1, 30) ... ) ~~~