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.
我正在寻找一种将我的 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.