Next

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)
Next