常见问题:管理员 — Django 文档
FAQ:管理
我无法登录。 当我输入有效的用户名和密码时,它只会再次显示登录页面,没有错误消息。
登录 cookie 设置不正确,因为 Django 发送的 cookie 域与浏览器中的域不匹配。 尝试设置 :setting:`SESSION_COOKIE_DOMAIN` 设置以匹配您的域。 例如,如果您要在浏览器中访问“https://www.example.com/admin/”,请设置 SESSION_COOKIE_DOMAIN = 'www.example.com'
。
我无法登录。 当我输入有效的用户名和密码时,它再次显示登录页面,并显示“请输入正确的用户名和密码”错误。
如果您确定您的用户名和密码正确,请确保您的用户帐户将 is_active 和 is_staff 设置为 True。 管理站点只允许访问这两个字段都设置为 True 的用户。
如何自动将字段的值设置为上次在管理员中编辑对象的用户?
ModelAdmin 类提供自定义挂钩,允许您使用请求中的详细信息在对象保存时对其进行转换。 通过从请求中提取当前用户,并自定义 save_model() 钩子,您可以更新对象以反映编辑它的用户。 有关示例,请参阅 关于 ModelAdmin 方法 的文档。
我们如何设定管理权限,以便对象只能由创建它们的用户进行编辑?
ModelAdmin 类还提供自定义挂钩,允许您控制管理中对象的可见性和可编辑性。 使用从请求中提取用户的相同技巧,get_queryset() 和 has_change_permission() 可用于控制管理中对象的可见性和可编辑性。
我的“list_filter”包含一个 ManyToManyField,但过滤器不显示。
如果相关对象少于两个,Django 不会为 ManyToManyField
显示过滤器。
例如,如果您的 list_filter 包含 sites,并且您的数据库中只有一个站点,则它不会显示“站点”过滤器。 在这种情况下,按站点过滤将毫无意义。
某些对象未出现在管理中。
不一致的行计数可能是由于缺少外键值或外键字段错误地设置为 null=False。 如果您有一个 ForeignKey 指向一个不存在的对象的记录,并且包含的外键是 list_display,则该记录将不会显示在管理更改列表中,因为 Django 模型正在声明未在数据库级别实现的完整性约束。
如何个性化管理员后台接口的功能?
你有几个选择。 如果您想搭载 Django 自动生成的添加/更改表单,您可以通过模型的类 Admin js 参数 将任意 JavaScript 模块附加到页面。 该参数是一个 URL 列表,作为字符串,指向将通过 <script>
标签包含在管理表单中的 JavaScript 模块。
如果您想要比简单地调整自动生成的表单更多的灵活性,请随时为管理员编写自定义视图。 管理员由 Django 本身提供支持,您可以编写挂钩到身份验证系统的自定义视图,检查权限并执行他们需要执行的任何其他操作。
如果您想自定义管理界面的外观,请阅读下一个问题
动态生成的管理站点很丑! 我怎样才能改变它?
我们喜欢它,但如果您不同意,您可以通过编辑 CSS 样式表和/或相关图像文件来修改管理站点的演示文稿。 该站点是使用语义 HTML 和大量 CSS 挂钩构建的,因此您可以通过编辑样式表进行任何更改。
Admin 适配了哪些浏览器?
管理员为 YUI 的 A 级 浏览器提供全功能体验,但不支持 IE6 的显着例外。
可能 在受支持的浏览器之间存在细微的风格差异 - 例如,某些浏览器可能不支持圆角。 这些被认为是渲染中可接受的变化。