Changelog

全名 (Ascending) Unsort 页面 提交时间 (Ascending) Unsort 内容 注释 ...
2.0/chapter10/#197 2010-01-05 16:06:28 它将取代模型的默认manager,如果我们没有特别自定义一个manager叫objects,它将会被自动建.
2.0/chapter10/#198 2010-01-05 16:09:28 我们命名他为objects而不是其它的,是为了与自动创建的manager保持一致.
2.0/chapter10/#200 2010-01-05 16:11:50 为什么我们要添加一个title_count()方法呢?是为了将经常使用的查询进行封装,这样我们就不必重复的编码了.
2.0/chapter10/#202 2010-01-05 16:12:20 修改初始Manager QuerySets
2.0/chapter10/#204 2010-01-05 16:13:09 一个manager的基本QuerySet返回系统中的所有objects.
2.0/chapter10/#205 2010-01-05 16:13:55 例如,Book.objects.all返回数据库book中的所有书本.
2.0/chapter10/#207 2010-01-05 16:15:20 我们可以通过覆盖Manager.get_query_set()方法来覆盖manager的基本QuerySet.
2.0/chapter10/#208 2010-01-05 16:16:13 get_query_set()按照你的要求返回一个QuerySet
2.0/chapter10/#208 2010-01-05 16:16:26 get_query_set()按照你的要求返回一个QuerySet.
2.0/chapter10/#210 2010-01-05 16:17:46 例如,下面的模型有两个manager.一个返回所有对像,另一个只返回作者是Roald Dahl的书.
2.0/chapter10/#213 2010-01-05 16:20:01 在这个示例模型中,Book.objects.all()返回了数据库中的所有书本,而Book.dahl_objects.all()只返回了一本.
2.0/chapter10/#214 2010-01-05 16:22:35 注意我们明确的将objects设置成manager的实例,是因为如果我们不这么做,那么唯一可用的manager就将是dah1_objects.
2.0/chapter10/#216 2010-01-05 16:24:18 当然,由于get_query_set()返回的是一个QuerySet对像,所以我们可以使用filter(),exclude()和其他一切QuerySet的方法.
2.0/chapter10/#217 2010-01-05 16:25:09 像这些语法都是正确的.
2.0/chapter10/#217 2010-01-05 16:25:16 像这些语法都是正确的.
2.0/chapter10/#220 2010-01-05 16:25:55 这个例子也指出了其他有趣的技术:
2.0/chapter10/#221 2010-01-05 16:26:31 在同一个模型中使用多个manager.
2.0/chapter10/#222 2010-01-05 16:27:39 只要你愿意,你可以为你的模型添加多个manager()实例.
2.0/chapter10/#223 2010-01-05 16:28:39 这是一个为模型添加通过滤器的简单方法.
2.0/chapter10/#225 2010-01-05 16:28:56 例如:
2.0/chapter10/#228 2010-01-05 16:31:00 这个例子允许你执行Person.men.all(),Person.women.all(),Person.people.all()查询,生成你想要的结果.
2.0/chapter10/#230 2010-01-05 16:33:28 如果你自定义了Manager对像.请注意,第一个Manager(它在模型中被定义的位置)会有一个特殊状态.
2.0/chapter10/#231 2010-01-05 16:37:09 Django将会把第一个manager定义为默认manager,Django的许多部分(但是不包括admin应用)将会明确的为模型使用这个manager.
2.0/chapter10/#232 2010-01-05 16:42:29 结论是,你通常要小心的选择你的默认manager.由于覆盖get_query_set(),你可能接受到一个无用的返回对像,你必须避免这种情况.
2.0/chapter10/#234 2010-01-05 16:42:49 模型方法
2.0/chapter10/#236 2010-01-05 16:46:43 为了给你的对像添加一个行级功能,那就定义一个自定义方法.
2.0/chapter10/#237 2010-01-05 16:48:11 有鉴于manager经常被用来用一些table-wide的事情,模型方法应该只对特殊模型实例起作用.
2.0/chapter10/#239 2010-01-05 16:49:25 在模型的同一处保持事务逻辑是一项有价值的技术.
2.0/chapter10/#241 2010-01-05 16:49:55 一个例子是阐述它的最简单途径.
2.0/chapter10/#242 2010-01-05 16:50:24 这个模型有一些自定义方法.
2.0/chapter10/#245 2010-01-05 16:51:40 例子中的最后一个方法是一个property.
2.0/chapter10/#246 2010-01-05 16:52:16 想了解更多property请到http://www.python.org/download/releases/2.2/descrintro/#property
2.0/chapter10/#248 2010-01-05 16:53:04 在这演示例子的用法.
2.0/chapter10/#251 2010-01-05 16:53:31 执行,行SQL查询.
2.0/chapter10/#253 2010-01-05 16:54:54 有时候你会发现django数据库api带给你的也只有这么多,那你可以为你的数据库写一些自定义SQL查询.
2.0/chapter10/#254 2010-01-05 16:56:02 你可以通过导入django.db.connection对像来轻松实现,它代表当前数据库连接.
2.0/chapter10/#255 2010-01-05 16:56:56 使用它,通过connection.cursor()可以得到一个游标对像
2.0/chapter10/#255 2010-01-05 16:57:08 使用它,通过connection.cursor()可以得到一个游标对像.
2.0/chapter10/#256 2010-01-05 16:58:24 然后,使用cursor.execute(sql, [params])来执行SQL语句和cursor.fetchone()或者cursor.fetchall(),返回记录集.
2.0/chapter10/#257 2010-01-05 16:58:34 例如:
2.0/chapter10/#260 2010-01-05 17:00:23 connection和curso可以最大程度的实现标准Python DB-API,你可以在http://www.python.org/peps/pep-0249.html了解它.
2.0/chapter10/#261 2010-01-05 17:03:51 如果你对Python DB-API不熟悉,请注意在SQL语句cursor.execute()使用"%s",而不要在SQL内试图立刻添加一个参数.
2.0/chapter10/#262 2010-01-05 17:06:05 如果你使用了这个技术,数据库后的基础库将会自动添加引用同时尽可能的转意你的参数.
2.0/chapter10/#264 2010-01-05 17:08:38 更不要把你的视图代码和django.db.connection语句混杂在一起,把它们放在自定义模型或者自定义manager方法中是个不错的主意.
2.0/chapter10/#265 2010-01-05 17:09:40 比如,上面的例子可以被整合成一个自定义manager方法就像这样:
2.0/chapter10/#268 2010-01-05 17:10:28 然后这样使用:
2.0/chapter02/#332 2010-01-10 04:16:01 好了,你已经安装好一切所需, 并且开发服务器也运行起来了,你已作好了准备可以继续 <reference name="learn the basics" refuri="../chapter03/">学习基础知识---用Django伺候网頁</reference> , 这一章的内容。
2.0/chapter07/#20 2010-01-23 13:52:39
2.0/chapter02/#0 2010-01-25 16:27:29 第二章:入门
2.0/chapter07/#20 2010-02-08 10:35:09
« < 4 5 6 7 8 9 10 > » 96 pages