Code Reference

Admin

Django · Reference cheat sheet

Admin

Django · Reference cheat sheet


📋 Overview

Django Admin is an auto-generated CRUD UI for models registered with admin.site. Enable django.contrib.admin, create a superuser, and customize list displays, filters, and search. Use it for internal ops—not as a public end-user interface.

🔧 Core concepts

PieceRole
admin.site.register(Model, ModelAdmin)Expose a model
@admin.register(Model)Decorator form
ModelAdminlist_display, list_filter, search_fields, readonly_fields
InlineModelAdminEdit related objects on the parent page
PermissionsStaff + model perms; superuser bypasses
URLsIncluded via path("admin/", admin.site.urls)

Requires django.contrib.admin, auth, contenttypes, sessions, messages in INSTALLED_APPS.

💡 Examples

Register with list options:

# app/admin.py
from django.contrib import admin
from .models import Article


@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
    list_display = ("title", "author", "published_at", "is_published")
    list_filter = ("is_published", "published_at")
    search_fields = ("title", "body")
    prepopulated_fields = {"slug": ("title",)}
    date_hierarchy = "published_at"
    ordering = ("-published_at",)

Inlines:

from django.contrib import admin
from .models import Order, OrderItem


class OrderItemInline(admin.TabularInline):
    model = OrderItem
    extra = 1


@admin.register(Order)
class OrderAdmin(admin.ModelAdmin):
    inlines = [OrderItemInline]
    list_display = ("id", "user", "created_at")

URLs:

# config/urls.py
from django.contrib import admin
from django.urls import path

urlpatterns = [
    path("admin/", admin.site.urls),
]

⚠️ Pitfalls

  • Forgetting admin.autodiscover is fine on modern Django—apps' admin.py load via AppConfig.
  • Heavy list_display callables without list_select_related cause N+1 queries.
  • Exposing admin on the public internet without HTTPS, 2FA, and IP limits is risky.
  • Custom user models must be registered carefully; swap before the first migration.

On this page