Django Admin Customization
Django's admin panel is a powerful, auto-generated interface for managing data. Customizing it with list_display, search, filters, inlines, and actions creates a professional CMS without writing frontend code.
20 min•By Priygop Team•Updated 2026
Admin Customization Options
- list_display — Columns shown in list view
- list_filter — Sidebar filters
- search_fields — Search bar (searches specified fields)
- ordering — Default sort order
- list_editable — Edit fields directly in list view
- prepopulated_fields — Auto-fill slug from title
- inlines — Edit related objects on same page
- actions — Custom bulk operations
- readonly_fields — Fields that can't be edited
Admin Customization
Admin Customization
# blog/admin.py
# from django.contrib import admin
# from .models import Post, Category, Tag, Comment
# class CommentInline(admin.TabularInline):
# model = Comment
# extra = 0
# readonly_fields = ['author', 'created_at']
# @admin.register(Post)
# class PostAdmin(admin.ModelAdmin):
# list_display = ['title', 'author', 'category', 'published', 'created_at', 'views_count']
# list_filter = ['published', 'category', 'created_at']
# search_fields = ['title', 'content', 'author__username']
# prepopulated_fields = {'slug': ('title',)}
# list_editable = ['published']
# ordering = ['-created_at']
# date_hierarchy = 'created_at'
# inlines = [CommentInline]
# readonly_fields = ['views_count', 'created_at', 'updated_at']
#
# # Custom admin action
# actions = ['publish_selected', 'unpublish_selected']
#
# @admin.action(description='Publish selected posts')
# def publish_selected(self, request, queryset):
# count = queryset.update(published=True)
# self.message_user(request, f'{count} posts published.')
#
# @admin.action(description='Unpublish selected posts')
# def unpublish_selected(self, request, queryset):
# queryset.update(published=False)
# @admin.register(Category)
# class CategoryAdmin(admin.ModelAdmin):
# list_display = ['name', 'slug']
# prepopulated_fields = {'slug': ('name',)}Tip
Tip
Customize Django admin with list_display, list_filter, search_fields. Use inlines for related models on the same page.
Diagram
Loading diagram…
Free CRUD UI. Customize, don't rebuild.
Common Mistake
Warning
Not customizing Django admin for your models. Default admin is hard to use. Add list_display and search_fields.
Practice Task
Note
(1) Customize admin for a model. (2) Add inlines for related models. (3) Add custom actions.
Quick Quiz
Key Takeaways
- Django's admin panel is a powerful, auto-generated interface for managing data.
- list_display — Columns shown in list view
- list_filter — Sidebar filters
- search_fields — Search bar (searches specified fields)