【问题标题】:Django - Admin - Mandatory fields with ' * 'Django - 管理员 - 带“*”的必填字段
【发布时间】:2011-06-02 04:21:58
【问题描述】:

目前,Django admin 会以粗体标签显示所有必填字段。是否可以在标签中用 * 标记而不是粗体标签?

【问题讨论】:

    标签: django django-admin


    【解决方案1】:

    Django 管理员使用模板来呈现模型的添加/编辑页面。可以用您自己的模板(从原始模板扩展而来)替换该模板,覆盖您需要的模板块,以便进行您想要的更改。

    查看the Django docs regarding overriding admin templates了解更多信息。

    这是您需要以某种方式更改的admin/change_form.html template(因为此模板会呈现您添加新实例或编辑现有实例时显示的页面)。现有模板已经将required 类应用于适当的标签,因此我将创建一个如下所示的新模板:

    {% extends "admin/change_form.html" %}
    
    {% block extrastyle %}
        {{ block.super }}
        <style type="text/css">
            /* add an asterisk using CSS */
            .required:after {
                content: " *";
            }
        </style>
    {% endblock %}
    

    应用于单个模型

    如果您希望此模板用于特定模型,则应使用model admin class,将change_form_template 属性设置为您创建的模板文件的位置,如this section of the docs 中所述。

    应用于单个应用

    如果您希望模板应用于整个应用程序中的模型,请在应用程序的根目录中创建一个 templates 文件夹。 Django 将automatically look for templates there,因此如果您创建一个名为admin 的文件夹并在其中放置一个名为change_form.html 的文件,它将自动覆盖该名称的默认Django 模板(admin/change_form.html)。

    项目范围

    为了在项目范围内应用此模板,请在某处(而不是应用程序内)创建一个名为 templates 的文件夹。再次将您的新模板放在此目录中admin/change_form.html

    接下来edit the template directories Django setting 指定此目录的位置,以便让 Django 找到模板并以与以前相同的方式覆盖默认模板,仅在项目范围内,而不仅仅是在应用程序范围内。


    这是一组相当复杂的事情,特别是对于这样一个简单的更改,如果您以前没有使用过管理模板(或者即使您有),您可能会发现它很棘手。

    希望您现在了解更改管理模板所需的内容,它实际上相当优雅(如 Django),但在我看来,仅仅更改为一些星号并不值得。

    【讨论】:

    • 非常有帮助的关于如何更改管理模板的总结。
    • 绝妙的答案!快速补充一点:在较新版本的 django 上,已经附加了一些内容:在所需的类之后。要覆盖它,您需要执行更具体的操作,例如 .aligned label.required:after {}
    猜你喜欢
    • 2017-03-27
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 2011-12-24
    • 2018-09-08
    • 1970-01-01
    • 2011-05-19
    • 2011-02-26
    相关资源
    最近更新 更多