IIssNan
|
2.0/chapter07/#340 |
2009-11-14 11:00:04
|
Django的newfomrs库
|
|
IIssNan
|
2.0/chapter07/#338 |
2009-11-14 10:58:31
|
接下来我们来深入了解一下form库,并使用她来重写contact表单应用。
|
|
IIssNan
|
2.0/chapter07/#337 |
2009-11-14 10:56:44
|
Django带有一个form库,称为django.forms,这个库可以处理我们本章所提到的包括HTML表单显示以及验证。
|
|
luwenhua@126.com
|
2.0/chapter06/#412 |
2009-11-14 04:49:03
|
当一个作者用这些不完整的表格添加一本新书时,django会简单地将<literal>发布日期</literal>设置为<literal>none</literal>,以确保这个字段满足<literal>null=True</literal>。
|
|
luwenhua@126.com
|
2.0/chapter06/#410 |
2009-11-14 04:44:32
|
当然,这纯是一个假设的例子。
|
|
luwenhua@126.com
|
2.0/chapter06/#409 |
2009-11-14 04:43:59
|
如果你是一个编辑,且期望作者不要延期,这样就会很有用。
|
|
luwenhua@126.com
|
2.0/chapter06/#408 |
2009-11-14 04:40:59
|
最终,就不会提供对发布日期进行改动的途径。
|
|
luwenhua@126.com
|
2.0/chapter06/#405 |
2009-11-14 04:36:21
|
例如,在我们的book数据库中,我们可以就隐藏<literal>publication_date</literal>以防止它被编辑。
|
|
luwenhua@126.com
|
2.0/chapter06/#405 |
2009-11-14 04:35:53
|
例如,在我们的book数据库中,我们可以就隐藏以防止它被编辑。<literal>publication_date</literal> |
|
luwenhua@126.com
|
2.0/chapter06/#404 |
2009-11-14 04:33:33
|
当你的admi用户只是被信任可以更改你的某一部分数据时,或者,你的数据被一些外部的程序自动处理而改变了了,你就可以用这个功能。
|
|
iaml
|
2.0/chapter06/#403 |
2009-11-13 21:28:53
|
只要不选上不想被编辑的field(s)即可。
|
|
iaml
|
2.0/chapter06/#402 |
2009-11-13 21:25:01
|
通过fields这个选项,你可以排除一些不想被其他人编辑的fields
|
|
15325@qq.com
|
2.0/chapter06/#399 |
2009-11-13 18:01:20
|
字段顺序当然是与数据条目录入顺序有关,
|
|
15325@qq.com
|
2.0/chapter06/#400 |
2009-11-13 18:01:08
|
每个表单都不一样。
|
|
15325@qq.com
|
2.0/chapter06/#399 |
2009-11-13 18:00:36
|
字段顺序当然是与数据条目录入顺序有关。
|
|
15325@qq.com
|
2.0/chapter06/#398 |
2009-11-13 17:58:23
|
它看起来自然多了——作者排在书名之后。
|
|
15325@qq.com
|
2.0/chapter06/#394 |
2009-11-13 17:57:22
|
我们可以通过使用<literal>ModelAdmin</literal>子类中的<literal>fields</literal>选项来改变它:
|
|
15325@qq.com
|
2.0/chapter06/#397 |
2009-11-13 17:56:11
|
完成之后,编辑表单将按照指定的顺序显示各字段。
|
|
15325@qq.com
|
2.0/chapter06/#394 |
2009-11-13 17:55:22
|
我们可以通过使用<literal>ModelAdmin</literal>子类中的<literal>fields</literal>选项来改变它。
|
|
15325@qq.com
|
2.0/chapter06/#393 |
2009-11-13 17:54:37
|
默认地,表单中的字段顺序是与模块中定义是一致的。
|
|
15325@qq.com
|
2.0/chapter06/#392 |
2009-11-13 17:53:45
|
首先,我们先自定义字段顺序。
|
|
15325@qq.com
|
2.0/chapter06/#390 |
2009-11-13 17:07:32
|
正如自定义列表那样,编辑表单多方面也能自定义。
|
|
15325@qq.com
|
2.0/chapter06/#390 |
2009-11-13 17:06:47
|
正如自定义列表,编辑表单也能以多种方式自定义。
|
|
15325@qq.com
|
2.0/chapter06/#388 |
2009-11-13 17:05:01
|
自定义编辑表单
|
|
15325@qq.com
|
2.0/chapter06/#386 |
2009-11-13 17:03:37
|
通过使用它们,你可以仅需几行代码就能创建一个功能强大、随时上线的数据编辑界面。
|
|
15325@qq.com
|
2.0/chapter06/#385 |
2009-11-13 17:01:03
|
我们已经学习了主要的选项。
|
|
15325@qq.com
|
2.0/chapter06/#383 |
2009-11-13 16:59:45
|
含排序的book列表页面
|
|
15325@qq.com
|
2.0/chapter06/#379 |
2009-11-13 16:59:13
|
(见图 6-12.)
|
|
15325@qq.com
|
2.0/chapter06/#378 |
2009-11-13 16:58:59
|
注意Publication
date列头现在有一个小箭头显示排序。
|
|
15325@qq.com
|
2.0/chapter06/#377 |
2009-11-13 16:57:42
|
刷新book列表页面观看实际效果。
|
|
15325@qq.com
|
2.0/chapter06/#375 |
2009-11-13 16:56:56
|
如果要实现降序,仅需在传入的列表或元组的字段前加上一个减号(-)。
|
|
15325@qq.com
|
2.0/chapter06/#374 |
2009-11-13 16:54:51
|
这个<literal>ordering</literal>选项基本像模块中<literal>class Meta</literal>的<literal>ordering</literal>那样工作,除了它只用列表中的第一个字段名。
|
|
15325@qq.com
|
2.0/chapter06/#371 |
2009-11-13 16:44:59
|
列表页面默认按照模块<literal>class Meta</literal>(详见第五章)中的<literal>ordering</literal>所指的列排序。但目前没有指定<literal>ordering</literal>值,所以当前排序是没有定义的。
|
|
15325@qq.com
|
2.0/chapter06/#370 |
2009-11-13 16:41:25
|
最后,让我们改变默认的排序方式,按publication date降序排列。
|
|
15325@qq.com
|
2.0/chapter06/#368 |
2009-11-13 16:39:56
|
请注意,<literal>date_hierarchy</literal>接受的是<emphasis> 字符串</emphasis> ,而不是元组。因为只能对一个日期型字段进行层次划分。
|
|
15325@qq.com
|
2.0/chapter06/#366 |
2009-11-13 16:37:23
|
含date_hierarchy的book列表页面
|
|
15325@qq.com
|
2.0/chapter06/#365 |
2009-11-13 16:36:36
|
图 6-11.
|
|
15325@qq.com
|
2.0/chapter06/#361 |
2009-11-13 16:36:19
|
修改好后,页面中的列表顶端会有一个逐层深入的导航条,效果如图 6-11.
|
|
15325@qq.com
|
2.0/chapter06/#362 |
2009-11-13 16:35:16
|
它从可用的年份开始,然后逐层细分到月乃至日。
|
|
15325@qq.com
|
2.0/chapter06/#361 |
2009-11-13 16:16:25
|
修改好后,页面中的列表顶端会有一个逐层深入的导航条,效果如下:
|
|
15325@qq.com
|
2.0/chapter06/#361 |
2009-11-13 16:14:59
|
修改好后,页面中的列表顶端会有一个下拉的导航条,效果如下:
|
|
15325@qq.com
|
2.0/chapter06/#358 |
2009-11-13 16:12:41
|
另外一种过滤日期的方式是使用<literal>date_hierarchy</literal>选项,如:
|
|
15325@qq.com
|
2.0/chapter06/#356 |
2009-11-13 16:11:42
|
<literal> 过滤器</literal> 同样适用于其它类型的字段,而不单是<literal> 日期型</literal> (请在<literal> 布尔型</literal> 和<literal> 外键</literal> 字段上试试)。当有两个以上值时,过滤器就会显示。
|
|
15325@qq.com
|
2.0/chapter06/#354 |
2009-11-13 16:00:39
|
含过滤器的book列表页面
|
|
15325@qq.com
|
2.0/chapter06/#353 |
2009-11-13 15:57:58
|
图 6-10.
|
|
15325@qq.com
|
2.0/chapter06/#350 |
2009-11-13 15:53:11
|
图 6-10显示了修改后的页面。
|
|
15325@qq.com
|
2.0/chapter06/#349 |
2009-11-13 15:51:49
|
Django为日期型字段提供了快捷过滤方式,它包含:今天、过往七天、当月和今年。这些是开发人员经常用到的。
|
|
15325@qq.com
|
2.0/chapter06/#348 |
2009-11-13 15:41:26
|
然后,我们用<literal>list_filter</literal>这个字段元组创建过滤器,它位于列表页面的右边。
|
|
15325@qq.com
|
2.0/chapter06/#347 |
2009-11-13 15:38:23
|
由于我们要处理一系列选项,因此我们创建了一个单独的<literal>ModelAdmin</literal>类:<literal>BookAdmin</literal>。首先,我们定义一个<literal>list_display</literal>,以使得页面好看些。
|
|
15325@qq.com
|
2.0/chapter06/#342 |
2009-11-13 15:33:59
|
含search_fields的author列表页面
|
呼应前文“追加search_fields”
|