ySJ
|
2.0/chapter06/#308 |
2010-04-13 13:29:28
|
这个类是自定义管理工具的关键,其中最基本的一件事情是允许你指定列表中的显示字段。
|
|
ySJ
|
2.0/chapter06/#300 |
2010-04-13 13:26:49
|
119
|
|
ySJ
|
2.0/chapter06/#300 |
2010-04-13 13:22:55
|
119
|
|
ySJ
|
2.0/chapter06/#280 |
2010-04-13 13:03:53
|
但这不适用于<literal>ManyToManyField</literal> 和<literal>ForeignKey</literal>字段,因为它们的第一个参数必须是模块类。
|
|
ySJ
|
2.0/chapter06/#267 |
2010-04-13 11:27:13
|
你只需在模块字段中指定<literal>verbose_name</literal>。
|
|
ySJ
|
2.0/chapter06/#254 |
2010-04-13 11:17:02
|
(注意:此SQL语法是针对PostgreSQL的。)
|
|
ySJ
|
2.0/chapter06/#254 |
2010-04-13 11:16:12
|
(注意:以下SQL语法是针对PostgreSQL的。)
|
|
ySJ
|
2.0/chapter06/#249 |
2010-04-13 11:15:19
|
出于某种原因,Django不会尝试自动更新数据库结构。所以你必须自已执行<literal>ALTER TABLE</literal>语句将模块的改动更新至数据库。
|
|
ySJ
|
2.0/chapter06/#239 |
2010-04-13 11:12:40
|
如果你想允许一个日期型(<literal>DateField</literal>、<literal>TimeField</literal>、<literal>DateTimeField</literal>)或数字型(<literal>IntegerField</literal>、<literal>DecimalField</literal>、<literal>FloatField</literal>)字段为空,你需要同时使用<literal>null=True</literal> |
|
ySJ
|
2.0/chapter06/#218 |
2010-04-13 11:04:52
|
在SQL中, <literal>NULL</literal>的值不同于空字符串,就像Python中<literal>None</literal>不同于空字符串(<literal>""</literal>)一样。这意味着某个字符型字段(如<literal>VARCHAR</literal>)的值可能同时包含<literal>NULL</literal>和空字符串。
|
|
ySJ
|
2.0/chapter06/#208 |
2010-04-13 10:59:51
|
当你添加<literal>blank=True</literal>以后,刷新页面Add author edit form
(<literal>http://127.0.0.1:8000/admin/books/author/add/</literal> ),你会发现Email的标签不再是粗体了。
|
|
ySJ
|
2.0/chapter06/#196 |
2010-04-13 10:53:51
|
为了指定<literal>email</literal>字段为可选,你只需编辑<literal>Book</literal>模块(回想第五章,它在<literal>mysite/books/models.py</literal>文件里。),为<literal>email</literal>字段上加上<literal>blank=True</literal>。代码如下:
|
|
ySJ
|
2.0/chapter06/#183 |
2010-04-13 10:44:20
|
其它的<literal>django.contrib</literal>应用程序,如<literal>django.contrib.redirects</literal>,像从网上下载的第三方Django应用程序一样,都会自行添加到管理工具中。
|
|
ySJ
|
2.0/chapter06/#175 |
2010-04-13 10:38:31
|
当服务启动时,Django从<literal> urls.py</literal> 引导URLconf,然后执行<literal> admin.autodiscover()</literal> 语句。
|
|
ySJ
|
2.0/chapter06/#168 |
2010-04-13 10:37:19
|
很方便吧。
|
|
ySJ
|
2.0/chapter06/#167 |
2010-04-13 10:36:23
|
当你在那个窗口中成功创建了一个publisher后,Add book表单会自动把它更新到字段上去。
|
|
ySJ
|
2.0/chapter06/#133 |
2010-04-13 09:54:33
|
通过管理界面做的每一个改变都留有记录,你可以点击历史链接来检查这个记录(见图6-6)。
|
|
ySJ
|
2.0/chapter06/#118 |
2010-04-13 09:52:32
|
你可以通过点击编辑页面下方,edit form左边的删除按钮来删除一条记录。
|
|
ySJ
|
2.0/chapter06/#116 |
2010-04-13 09:50:56
|
(如果要更改用户密码,你必须点击密码字段下的change password form,而不是直接更改字段值中的哈希码。)另外需要注意的是,不同类型的字段会用不同的窗口控件显示。例如,日期/时间型用日历控件,布尔型用复选框,字符型用简单文本框显示。
|
|
ySJ
|
2.0/chapter06/#106 |
2010-04-13 09:47:58
|
如果你一直跟着我们的例子做练习,并且只添加了一个用户,你会在这个页面中看到一个用户。但是如果你添加了多个用户,你会发现页面中还有过滤器、排序和查询框。
|
|
ySJ
|
2.0/chapter06/#105 |
2010-04-13 09:47:12
|
这个页面显示了数据库中所有的用户。你可以将它看作是<literal>SELECT * FROM auth_user;</literal>的一个漂亮的网页版查询。
|
|
ySJ
|
2.0/chapter06/#103 |
2010-04-13 09:45:38
|
用户更改列表页面
|
|
ySJ
|
2.0/chapter06/#91 |
2010-04-13 09:43:09
|
'django.contrib.sessions.middleware.SessionMiddleware'之后。
|
|
ySJ
|
2.0/chapter06/#90 |
2010-04-13 09:42:42
|
仅需添加<literal> 'django.middleware.locale.LocaleMiddleware'</literal> 到<literal> MIDDLEWARE_CLASSES</literal> 设置中,并确保它在
|
|
ySJ
|
2.0/chapter06/#89 |
2010-04-13 09:40:21
|
如果你的母语不是英语,并且你的浏览器的默认语言也不是英语,你可以做一个快速更改来观察Django管理工具是否被翻译成你想要的语言。
|
|
ySJ
|
2.0/chapter06/#76 |
2010-04-13 09:37:50
|
一旦登录了,你将看到admin首页。
|
|
ySJ
|
2.0/chapter06/#78 |
2010-04-13 09:37:16
|
现在,由于我们还没有激活任何模块,所以这个列表只有寥寥数条项目:
|
|
ySJ
|
2.0/chapter06/#78 |
2010-04-13 09:36:55
|
现在,由于我们还没有激活任何模块,所以这个列表只有寥寥数条类目:
|
|
ySJ
|
2.0/chapter06/#73 |
2010-04-13 09:35:40
|
使用你之前设置的超级用户的用户名和密码登录。
|
|
ySJ
|
2.0/chapter06/#62 |
2010-04-13 09:32:50
|
使用管理工具。
|
|
ySJ
|
2.0/chapter06/#59 |
2010-04-13 09:31:21
|
当这一切都配置好后,现在你会发现Django管理工具可以运行了。
|
|
ySJ
|
2.0/chapter06/#50 |
2010-04-13 09:28:47
|
如果你不这么作,你需要单独运行<literal>python manage.py createsuperuser</literal>来创建一个admin的用户帐号,否则你将不能登录到admin站点。
|
|
ySJ
|
2.0/chapter06/#46 |
2010-04-13 09:26:29
|
确保<literal>MIDDLEWARE_CLASSES</literal> 包含<literal>'django.middleware.common.CommonMiddleware'</literal> 、<literal>'django.contrib.sessions.middleware.SessionMiddleware'</literal> 和<literal>'django.contrib.auth.middleware.AuthenticationMiddleware'</literal> 。(再次提醒,如果你是顺序学习本文的话,请把在第五章做的注释取消。)
|
|
ySJ
|
2.0/chapter06/#44 |
2010-04-13 09:23:39
|
(如果你一直跟随本文制作mysite项目的话,那么请注意我们在第五章的时候把这三项INSTALLED_APPS条目注释掉了。现在,请把注释取消。)
|
|
ySJ
|
2.0/chapter06/#38 |
2010-04-13 09:22:29
|
第一步,对你的settings.py文件做如下改变:
|
|
ySJ
|
2.0/chapter06/#41 |
2010-04-13 09:22:09
|
(<literal>INSTALLED_APPS</literal>中的配置顺序是没有关系的, 但是我们喜欢保持按字母顺序排序以方便阅读。)
|
|
ySJ
|
2.0/chapter06/#40 |
2010-04-13 09:21:20
|
将<literal>'django.contrib.admin'</literal>加入<literal>INSTALLED_APPS</literal>配置项中。
|
|
ySJ
|
2.0/chapter06/#38 |
2010-04-13 09:21:03
|
第一步,对你的settings.py文件做如下这些改变:
|
|
ySJ
|
2.0/chapter06/#40 |
2010-04-13 09:17:49
|
将<literal>'django.contrib.admin'</literal>加入settings.py的<literal>INSTALLED_APPS</literal>配置项中。
|
|
ySJ
|
2.0/chapter06/#30 |
2010-04-13 09:15:45
|
管理工具是本书讲述django.contrib的第一个部分。从技术层面上讲,它被称作django.contrib.admin。django.contrib中其它可用的特性,如用户身份认证系统(django.contrib.auth)、支持匿名会话(django.contrib.sessioins)甚至用户评论系统(django.contrib.comments)。这些,我们将在第十六章详细讨论。在成为一个Django专家以前,你将会知道更多django.contrib的特性。
|
|
ySJ
|
2.0/chapter06/#22 |
2010-04-13 09:10:24
|
请注意我们建议你读这章,即使你不打算用admin。因为我们将介绍一些概念,这些概念可以应用到Django的所有方面,而不仅仅是admin。
|
|
ySJ
|
2.0/chapter06/#20 |
2010-04-13 09:09:58
|
我们在这里讨论如何激活,使用和自定义这些特性。
|
|
ySJ
|
2.0/chapter06/#19 |
2010-04-13 09:08:53
|
这个特性是这样起作用的:它读取你模式中的元数据,然后提供给你一个强大而且可以使用的界面,网站管理者可以马上使用它。
|
|
ySJ
|
2.0/chapter06/#19 |
2010-04-13 09:08:28
|
这个特性是这样起作用的:它读取你模式中的元数据,然后提供给你一个强大而且可以使用的界面,网站管理者可以用它立即工作。
|
|
ySJ
|
2.0/chapter06/#4 |
2010-04-13 08:54:32
|
这是一个基于网页的,只向可信任的管理者开放的界面,它可以让你添加,编辑和删除网站内容。
|
|
ySJ
|
2.0/chapter06/#4 |
2010-04-13 08:54:19
|
这是一个基于网页的和只向可信任的管理者开放的界面,它可以让你添加,编辑和删除网站内容。
|
|
nofree
|
2.0/chapter12/#98 |
2010-04-12 18:08:00
|
设置成两个全面的,彼此独立的配置文件
|
“配”置文件而不是“设”置文件
|
ySJ
|
2.0/chapter05/#752 |
2010-04-12 17:53:17
|
有时候,你和你的团队成员也需要手工输入数据,这时候如果有一个基于Web的数据输入和管理的界面就会很有帮助。
|
|
ySJ
|
2.0/chapter05/#749 |
2010-04-12 17:51:56
|
你可能已经有现成的数据了,请看第十八章以获得有关如何集成现有数据库的建议。
|
|
ySJ
|
2.0/chapter05/#733 |
2010-04-12 17:49:44
|
为了预防误删除掉某一个表内的所有数据,Django要求在删除表内所有数据时显示使用all()。
|
|