Django总是在管理索引页中将模型的冗长名称大写

roejwanj  于 2022-12-20  发布在  Go
关注(0)|答案(1)|浏览(89)

关于字段的verbose_name也有类似的问题:How to stop auto-capitalization of verbose_name in django
当在管理索引页面列出应用的可用模型时,Django总是将模型verbose_name_plural的第一个字母大写,并将其用作模型的名称。
下面是www.example.com上的代码django.contrib.admin.sites.py:

model_dict = {
    'name': capfirst(model._meta.verbose_name_plural),
    'perms': perms,
}

但是考虑下面的screenshot,我想显示“vCenter”而不是“vCenter”。
我可以删除capfirst,并显式地将其他模型的verbose_name_plural大写以使其工作。
但是我必须修改Django的源代码,这看起来不是Django的bug,有更好的解决方案吗?

vxqlmq5t

vxqlmq5t1#

不是那么容易的...

  • admin/index.html模板复制到template/admin/index.html
  • 创建您自己的模板筛选器:您自己的templatetags/my_special_thing.py目录中的lowerfirst_if_starts_with_v
@register.filter(is_safe=True)
@stringfilter
def lowerfirst_if_starts_with_v(value):
    """Lowercase the first character of the value."""
    return value and value[0] =='v' and value[0].lower() + value[1:]
  • 将其加载到index.html
{%load my_special_thing%}
  • 将其应用于23线上的index.html
<th scope="row"><a href="{{ model.admin_url }}"> \
{{ model.name|lowerfirst_if_starts_with_v }}</a></th>

搞定了。

相关问题