WEB开发网
开发学院软件开发Python 使用 Django 和 Python 开发 Web 站点 阅读

使用 Django 和 Python 开发 Web 站点

 2007-03-29 12:41:22 来源:WEB开发网   
核心提示: 清单 11. 打印所有的职位>>> from jobs.models import Job>>> for job in Job.objects.all():... print jobManager 类还有两个过滤方法:一个是 filter,另外一个是 e

清单 11. 打印所有的职位

>>> from jobs.models import Job
>>> for job in Job.objects.all():
...   print job

Manager 类还有两个过滤方法:一个是 filter,另外一个是 exclude。过滤方法可以接受满足某个条件的所有方法,但是排除不满足这个条件的其他方法。下面的查询应该可以给出相同的结果(“gte” 表示 “大于或等于”,而 “lt” 表示 “小于”)。

清单 12. 排除和过滤职位

>>> from jobs.models import Job
>>> from datetime import datetime
>>> q1 = Job.objects.filter(pub_date__gte=datetime(2006, 1, 1))
>>> q2 = Job.objects.exclude(pub_date__lt=datetime(2006, 1, 1))

filter 和 exclude 方法返回一些 QuerySet 对象,这些对象可以链接在一起,甚至可以执行连接操作。下面的 q4 查询会查找从 2006 年 1 月 1 日开始在俄亥俄州的 Cleveland 张贴的职位:

清单 13. 对职位进行更多的排除和过滤

>>> from jobs.models import Job
>>> from datetime import datetime
>>> q3 = Job.objects.filter(pub_date__gte=datetime(2006, 1, 1))
>>> q4 = q3.filter(location__city__exact="Cleveland",
...        location__state__exact="Ohio")

QuerySets 是惰性的,这一点非常不错。这意味着只在对数据库进行求值之后才会对它们执行查询,这会比立即执行查询的速度更快。

这种惰性利用了 Python 的分片(slicing)功能。下面的代码并没有先请求所有的记录,然后对所需要的记录进行分片,而是在实际的查询中使用了 5 作为 OFFSET、10 作为 LIMIT,这可以极大地提高性能。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:使用 Django Python

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接