Introduction
Django Admin provides an automatic admin interface for managing models.
Admin Registration
# app/admin.py
from django.contrib import admin
from .models import Author, Book
@admin.register(Author)
class AuthorAdmin(admin.ModelAdmin):
list_display = ["name", "email", "created_at"]
search_fields = ["name", "email"]
list_filter = ["created_at"]
ordering = ["name"]
@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
list_display = ["title", "author", "price"]
list_select_related = ["author"]
date_hierarchy = "published_date"
Admin Customization
# Inline models
class BookInline(admin.TabularInline):
model = Book
extra = 1
class AuthorAdmin(admin.ModelAdmin):
inlines = [BookInline]
Actions
class BookAdmin(admin.ModelAdmin):
actions = ["mark_published", "mark_draft"]
@admin.action(description="Mark as published")
def mark_published(self, request, queryset):
queryset.update(status="published")
Practice Problems
- Register models in admin
- Customize list display
- Add search and filters
- Use inlines for related objects
- Create custom admin actions