15325@qq.com
|
2.0/chapter06/#324 |
2009-11-13 15:32:50
|
弄好了这个东东,再刷新author列表页面,你会看到列表中有三列:姓氏、名字和邮箱地址。
|
|
15325@qq.com
|
2.0/chapter06/#344 |
2009-11-13 15:31:31
|
接下来,让我们为<literal>Book</literal>列表页添加一些过滤器。
|
|
15325@qq.com
|
2.0/chapter06/#342 |
2009-11-13 15:30:38
|
含查询框的author列表页面
|
|
15325@qq.com
|
2.0/chapter06/#341 |
2009-11-13 15:30:04
|
图 6-9.
|
|
15325@qq.com
|
2.0/chapter06/#338 |
2009-11-13 15:29:39
|
正如用户所希望的那样,它是大小写敏感,并且对两个字段检索的查询框。如果查询<literal>"bar"</literal>,那么名字中含有Barney和姓氏中含有Hobarson的作者记录将被检索出来。
|
|
15325@qq.com
|
2.0/chapter06/#337 |
2009-11-13 15:25:25
|
(见图6-9.)我们刚才所作的修改列表页面,添加了一个根据姓名查询的查询框。
|
|
15325@qq.com
|
2.0/chapter06/#336 |
2009-11-13 15:03:46
|
刷新浏览器,你会在页面顶端看到一个查询栏。
|
|
15325@qq.com
|
2.0/chapter06/#333 |
2009-11-13 15:02:37
|
向<literal>AuthorAdmin</literal>追加<literal>search_fields</literal>,如:
|
|
15325@qq.com
|
2.0/chapter06/#332 |
2009-11-13 14:58:53
|
接下来,让我们添加一个快速查询栏。
|
|
15325@qq.com
|
2.0/chapter06/#330 |
2009-11-13 14:57:57
|
修改后的author列表页面
|
|
15325@qq.com
|
2.0/chapter06/#329 |
2009-11-13 14:57:43
|
图 6-8.
|
|
15325@qq.com
|
2.0/chapter06/#329 |
2009-11-13 14:57:18
|
图 6-8. 修改过的author列表页面
|
|
15325@qq.com
|
2.0/chapter06/#326 |
2009-11-13 14:56:34
|
(参见图 6-8)
|
|
15325@qq.com
|
2.0/chapter06/#325 |
2009-11-13 14:56:09
|
另外,点击每个列的列头可以对那列进行排序。
|
|
15325@qq.com
|
2.0/chapter06/#324 |
2009-11-13 14:54:21
|
弄好了这个东东,再刷新author列表页面,你会看到列表中有三列:姓氏、名字和油箱地址。
|
严肃版:做好了这个类。。。
|
15325@qq.com
|
2.0/chapter06/#322 |
2009-11-13 14:47:59
|
如果你忽略第二个参数,Django将使用默认的选项。<literal>Publisher</literal>和<literal>Book</literal>的注册就属于这种情况。
|
|
15325@qq.com
|
2.0/chapter06/#321 |
2009-11-13 14:45:37
|
<literal>admin.site.register()</literal>函数接受一个<literal>ModelAdmin</literal>子类作为第二个参数。
|
|
15325@qq.com
|
2.0/chapter06/#319 |
2009-11-13 14:44:45
|
用<literal>AuthorAdmin</literal>选项注册<literal>Author</literal>模块。
|
|
15325@qq.com
|
2.0/chapter06/#318 |
2009-11-13 14:44:04
|
我们修改了<literal>admin.site.register()</literal>调用,在<literal>Author</literal>后面添加了<literal>AuthorAdmin</literal>。你可以这样理解:
|
|
15325@qq.com
|
2.0/chapter06/#316 |
2009-11-13 14:42:02
|
当然,这些字段名称必须是模块中有的。
|
|
15325@qq.com
|
2.0/chapter06/#316 |
2009-11-13 14:41:09
|
当然,这些字段名称必须是存在于模块中的。
|
|
15325@qq.com
|
2.0/chapter06/#315 |
2009-11-13 14:40:14
|
我们只自定义了一项:<literal>list_display</literal>, 它是一个字段名称的元组,用于列表显示。
|
|
15325@qq.com
|
2.0/chapter06/#315 |
2009-11-13 14:39:14
|
我们只自定义了一项:<literal>list_display</literal>, 它是一个字段名称的元组,用来显示列表头。
|
|
15325@qq.com
|
2.0/chapter06/#314 |
2009-11-13 14:35:38
|
我们新建了一个类<literal>AuthorAdmin</literal>,它是从<literal>django.contrib.admin.ModelAdmin</literal>派生出来的子类,保存着一个类的自定义配置,以供管理工具使用。
|
|
15325@qq.com
|
2.0/chapter06/#312 |
2009-11-13 14:31:04
|
解释一下代码:
|
|
15325@qq.com
|
2.0/chapter06/#312 |
2009-11-13 14:30:07
|
代码解释如下:
|
|
15325@qq.com
|
2.0/chapter06/#309 |
2009-11-13 14:29:13
|
打开<literal>admin.py</literal>并修改:
|
|
15325@qq.com
|
2.0/chapter06/#305 |
2009-11-13 14:27:59
|
这个页面应该提供便利,比如说:在这个列表中可以看到作者的邮箱地址。如果能按照姓氏或名字来排序,那就更好了。
|
|
15325@qq.com
|
2.0/chapter06/#304 |
2009-11-13 14:26:58
|
我们可以在这基础上改进,添加其它字段,从而改变列表的显示。
|
|
15325@qq.com
|
2.0/chapter06/#302 |
2009-11-13 14:26:34
|
作者列表
|
|
15325@qq.com
|
2.0/chapter06/#298 |
2009-11-13 14:26:04
|
结果正如图6-7所示,列表中显示的是每个作者的姓名。
|
|
15325@qq.com
|
2.0/chapter06/#294 |
2009-11-13 14:25:33
|
列表默认地显示查询结果中对象的<literal>__unicode__()</literal>。
|
|
15325@qq.com
|
2.0/chapter06/#293 |
2009-11-13 14:24:58
|
让我们更深一步:自定义<literal>Author</literal>模块的列表中的显示字段。
|
|
15325@qq.com
|
2.0/chapter06/#291 |
2009-11-13 14:24:31
|
自定义列表
|
|
15325@qq.com
|
2.0/chapter06/#308 |
2009-11-13 14:24:11
|
这个类是自定义管理工具的关键,其中最基本的一件事情是允许你指定列表中的字段。
|
|
15325@qq.com
|
2.0/chapter06/#307 |
2009-11-13 12:31:50
|
为了达到这个目的,我们将为<literal>Author</literal>模块定义一个<literal>ModelAdmin</literal>类。
|
|
15325@qq.com
|
2.0/chapter06/#305 |
2009-11-13 12:30:49
|
这个页面应该提供便利,比如说:在这个列表(change list)中可以看到作者的邮箱地址。如果能按照姓或名来排序,那就更好了。
|
|
15325@qq.com
|
2.0/chapter06/#304 |
2009-11-13 12:27:02
|
我们可以在这基础上改进,添加其它字段,从而改变change list的显示。
|
|
15325@qq.com
|
2.0/chapter06/#302 |
2009-11-13 12:25:53
|
作者记录修改列表
|
|
15325@qq.com
|
2.0/chapter06/#301 |
2009-11-13 12:24:29
|
图 6-7.
|
|
15325@qq.com
|
2.0/chapter06/#298 |
2009-11-13 12:24:01
|
结果正如图6-7所示,change list中显示的是每个作者姓名。
|
|
15325@qq.com
|
2.0/chapter06/#295 |
2009-11-13 12:20:45
|
在第五章中,我们定义<literal>Author</literal>对象的<literal>__unicode__()</literal>方法,用以同时显示作者的姓和名。
|
|
15325@qq.com
|
2.0/chapter06/#294 |
2009-11-13 12:19:17
|
change list默认地显示查询结果中对象的<literal>__unicode__()</literal>。
|
|
15325@qq.com
|
2.0/chapter06/#293 |
2009-11-13 12:17:48
|
让我们更深一步:自定义<literal>Author</literal>模块的change list中显示的字段。
|
|
15325@qq.com
|
2.0/chapter06/#291 |
2009-11-13 12:14:35
|
自定义change lists(更改历史)
|
|
15325@qq.com
|
2.0/chapter06/#289 |
2009-11-13 12:13:35
|
这些选项都在<emphasis>ModelAdmin classes</emphasis>里面,这些类包含了管理工具中针对特别模块的配置。
|
|
15325@qq.com
|
2.0/chapter06/#289 |
2009-11-13 12:13:05
|
这些选项都在<emphasis>ModelAdmin classes</emphasis>里面,它们包含了管理工具中针对特别模块的配置。
|
|
15325@qq.com
|
2.0/chapter06/#288 |
2009-11-13 12:10:38
|
除了这些,Django还提供了大量选项让你针对特别的模块自定义管理工具。
|
|
15325@qq.com
|
2.0/chapter06/#286 |
2009-11-13 12:06:41
|
也就是说,这些修改实质上是构成模块的一部分,并且正好被管理工具使用,而不是专门针对管理工具的。
|
|
ea
|
2.0/chapter06/#382 |
2009-11-13 12:04:17
|
图 6-12
|
|