There is a CSS-way for those who don't want to override Django admin classes. Override and extend templates/admin/base_site.html
template as follows:
{% 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 %}
This will make only first letter of each content_title
uppercase.
You can use the same way to lowercase model name in admin tables as well as sidebar. However, I'd like to point that by tacit agreement model's verbose_name
as well as verbose_name_plural
shouldn't be capitalized. This will save you a lot of overrides in your project, like I provided above to normalize change_list
header.