Django 管理仪表板,有没有小写模型名称的方法?

Django admin dashboard, is there a way to lowercase model name?

我正在寻找一种将我的 Django 管理站点中模型的第一个字母小写的方法。

即: 模型详细名称是 "agent-1.0.0" 在仪表板上显示为 "Agent-1.0.0",

简单但 IDK

grappelli 技巧对我也有用。

django - 1.7.1

另外 - 只有一个应用程序模型组需要这个 - 并不是我的所有仪表板都应该是小写的...... 所以,覆盖 index.html 并不是那么有效

模型名称作为 capfirst(model._meta.verbose_name_plural) 传递给模板,因此您必须在 admin/index.html 模板中或通过 CSS 将其小写。恕我直言 CSS 选项更简单:

div.module tr[class^=model-] th {
    text-transform: lowercase;
}

如果您只需要小写某些型号(例如 User),则将 CSS 选择器更改为:

div.module tr.model-user th {
    text-transform: lowercase;
}

使用 Grapelli,您可以通过 运行:

创建自定义仪表板
 python manage.py customdashboard

并将您的设置 GRAPPELLI_INDEX_DASHBOARD 设置为自定义 class。

您可以使此自定义 class 从 grappelli 提供的仪表板 class 扩展,并根据您的需要覆盖它。尤其要注意 ModelList class,您可以在其中指定模型的标题。

大写为hard-coded in the template, same for the templates in Grappelli

您可以使用 catavaran 的建议,但这会转换每个模型名称。覆盖模板对于维护这么小的东西来说是一个巨大的痛苦。

我能想到的唯一可行的解​​决方案是使用 space 绕过 capfirst 过滤器:

class Meta:
    verbose_name = " agent-1.0.0"

由于capfirst只是将第一个字符强制大写,如果第一个字符不是字母则不会发生任何事情

对于那些不想覆盖 Django admin 类 的人来说,有一个 CSS-way。按如下方式覆盖和扩展 templates/admin/base_site.html 模板:

{% extends "admin/base_site.html" %}

{% block extrahead %}
    <style>
        h1.model-title {text-transform: lowercase;}
        h1.model-title:first-letter {text-transform: uppercase;}
    </style>
{% endblock %}

{% block content_title %}
    {% if title %}<h1 class="model-title">{{ title }}</h1>{% endif %}
{% endblock %}

这将使 每个 content_title 的第一个字母大写。

您可以使用相同的方式将管理表和侧边栏中的模型名称小写。但是,我想指出的是,默认协议模型的 verbose_name 以及 verbose_name_plural 不应大写。这将为您节省项目中的大量覆盖,就像我上面提供的规范化 change_list header.