FAQ: The admin

我无法登录。When I enter a valid username and password, it just brings up the login page again, with no error messages.

登录Cookie未正确设置,因为Django发出的Cookie的域与您浏览器中的域不匹配。尝试这两件事:

我无法登录。When I enter a valid username and password, it brings up the login page again, with a “Please enter a correct username and password” error.

如果您确定用户名和密码正确,请确保您的用户帐户is_activeis_staff设置为True。管理网站仅允许访问具有这两个字段都设置为True的用户。

How do I automatically set a field’s value to the user who last edited the object in the admin?

ModelAdmin类提供了定制钩子,允许您在保存对象时使用请求中的详细信息来转换对象。通过从请求中提取当前用户,并自定义save_model()钩子,您可以更新对象以反映编辑它的用户。有关示例,请参见the documentation on ModelAdmin methods

How do I limit admin access so that objects can only be edited by the users who created them?

ModelAdmin类还提供了定制钩子,允许您控制对象在管理中的可见性和可编辑性。使用从请求中提取用户的同样窍门,get_queryset()has_change_permission()可用于控制对象在管理中的可见性和可编辑性。

My admin-site CSS and images showed up fine using the development server, but they’re not displaying when using mod_wsgi.

请参阅“如何使用Django with mod_wsgi”文档中的serving the admin files

My “list_filter” contains a ManyToManyField, but the filter doesn’t display.

如果少于两个相关对象,Django不会打扰显示ManyToManyField的过滤器。

例如,如果您的list_filter包含sites,并且您的数据库中只有一个网站,则不会显示“网站”过滤器。在这种情况下,按站点过滤将是无意义的。

Some objects aren’t appearing in the admin.

不一致的行计数可能是由于缺少外键值或外键字段未正确设置为null=False而导致的。如果您有ForeignKey指向不存在的对象的记录,并且包含的​​外键是list_display,则记录将不会显示在管理员更改列表中,因为Django模型声明了一个未在数据库级实现的完整性约束。

How can I customize the functionality of the admin interface?

你有几个选择。如果您想要搭载Django自动生成的添加/更改表单,您可以通过模型的类Admin js parameter将任意JavaScript模块附加到页面。该参数是一个URL列表,作为字符串,指向将通过<script>标记包含在管理表单中的JavaScript模块。

如果你想要更多的灵活性,而不是简单地调整自动生成的表单,随时为管理员编写自定义视图。管理员由Django本身提供支持,您可以编写定制视图,将其挂接到身份验证系统中,检查权限并执行其他任何需要执行的操作。

如果您想自定义管理界面的外观,请阅读下一个问题。

动态生成的管理网站是丑陋的!How can I change it?

我们喜欢它,但如果你不同意,你可以通过编辑CSS样式表和/或关联的图像文件来修改管理网站的演示文稿。该网站是使用语义HTML和大量的CSS钩子构建的,所以你想做的任何更改都应该可以通过编辑样式表。

What browsers are supported for using the admin?

管理员为YUI的A-grade浏览器提供了一个全功能的体验,IE6的显着例外是不支持的。

在支持的浏览器之间,可能是较小的样式差异 - 例如,某些浏览器可能不支持圆角。这些被认为是可接受的渲染变化。