Having used the Django admin site extensively during development, I came to appreciate its functionality and intuitiveness. However, I felt that it could do with a little personalisation.
Specifically, I wanted to customise the site header, title suffix, and index title, which by default are "Django Administration", "Django site admin", and "Site administration" respectively. I initially came across a method which involves subclassing admin.AdminSite and overriding the relevant attributes, like so:
from django.contrib import admin
from .models import Post
class CustomAdminSite(admin.AdminSite):
site_header = "DB's Blog Administration"
site_title = "Site Admin"
index_title = "Admin Home"
class PostAdmin(admin.ModelAdmin):
list_display = ["title", "pub_date", "user"]
search_fields = ["title"]
exclude = ["slug"]
custom_admin_site = CustomAdminSite()
custom_admin_site.register(Post, PostAdmin)
But after learning more about the AdminSite class, I realised that subclassing may not be necessary in my case, considering all I wanted was to modify some display text, not the functionality. The solution was to simply override the attributes of the default AdminSite object:
from django.contrib import admin
from .models import Post
class PostAdmin(admin.ModelAdmin):
list_display = ["title", "pub_date", "user"]
search_fields = ["title"]
exclude = ["slug"]
admin.site.register(Post, PostAdmin)
admin.site.site_header = "DB's Blog Administration"
admin.site.site_title = "Site Admin"
admin.site.index_title = "Admin Home"
This addition yields the following result:

