Django - 管理员 - 带'*'的必填字段

时间:2011-01-01 06:27:17

标签: django django-admin

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

1 个答案:

答案 0 :(得分:13)

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查找模板并覆盖默认模板,方法与仅在项目范围之前相同,而不仅仅是app wide。


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

希望您现在明白更改管理模板需要什么,实际上相当优雅(就像Django一样),但在我看来,仅仅为了改变一些星号而不值得。