Django Admin
- Learn how to use and customize Django Admin to manage application data and models.
What is Django Admin?
Django Admin is a built-in web interface that allows developers and admins to:
Manage database records
Perform CRUD operations
Control application data visually
No need to write separate views or templates.
Why Django Admin is Powerful?
Auto-generated UI
Secure (login required)
Easy data management
Saves development time
Topic 2: Django Admin Interface
Admin Interface Features
Login page
Model listing
Add / Edit / Delete records
Search, filter, pagination
URL:
http://127.0.0.1:8000/admin/
Step 1: Create Superuser
Create Admin User
python manage.py createsuperuser
Provides full access to admin panel.
Registering Models in Admin
Basic Model Registration [admin.py]
Registers model to appear in admin panel.
from django.contrib import admin
from .models import Student
admin.site.register(Student)
Now Student appears in Admin UI.
Customizing Admin Interface
Customization improves usability & productivity.
1. Display Fields in Admin List
Custom List Display
class StudentAdmin(admin.ModelAdmin):
list_display = ('id', 'name', 'email', 'age')
admin.site.register(Student, StudentAdmin)
Shows selected columns in list view.
2. Search in Admin
Enable Search
class StudentAdmin(admin.ModelAdmin):
search_fields = ('name', 'email')
Adds search box.
3. Filters in Admin
Admin Filters
class StudentAdmin(admin.ModelAdmin):
list_filter = ('age', 'is_active')
Filter records easily.
4. Pagination in Admin
Admin Pagination
class StudentAdmin(admin.ModelAdmin):
list_per_page = 10
5. Editable Fields in List View
Editable Columns
class StudentAdmin(admin.ModelAdmin):
list_editable = ('age',)
Allows inline editing.
6. Ordering Records
Ordering in Admin
class StudentAdmin(admin.ModelAdmin):
ordering = ('-age',)
7. Read-Only Fields
Read-Only Fields
class StudentAdmin(admin.ModelAdmin):
readonly_fields = ('email',)
Admin Form Customization
Customize Admin Form Layout
class StudentAdmin(admin.ModelAdmin):
fields = ('name', 'email', 'age')
Controls form field order.
Using Fieldsets
Fieldsets in Admin
class StudentAdmin(admin.ModelAdmin):
fieldsets = (
('Personal Info', {
'fields': ('name', 'email')
}),
('Other Details', {
'fields': ('age', 'is_active')
}),
)
Register Multiple Models
admin.site.register([Student, Course, Category])
Real-World Example
Fully Customized Admin
class StudentAdmin(admin.ModelAdmin):
list_display = ('id', 'name', 'email', 'age', 'is_active')
list_filter = ('is_active',)
search_fields = ('name', 'email')
list_editable = ('is_active',)
ordering = ('name',)
list_per_page = 5
admin.site.register(Student, StudentAdmin)