Labs ICT
โญ Pro Login

Django Admin

The admin interface that comes for free.

Registering Models in Admin

Django admin gives you a ready-made interface for managing your data. Register a model to make it visible in the admin site.


from django.contrib import admin
from .models import Article

admin.site.register(Article)
    

This gives you a basic admin page for the Article model with default behavior. For more control, use a ModelAdmin class.

Customizing with ModelAdmin

The ModelAdmin class lets you customize how a model appears in the admin interface.


from django.contrib import admin
from .models import Article

class ArticleAdmin(admin.ModelAdmin):
    list_display = ['title', 'author', 'created_at', 'is_published']
    list_filter = ['is_published', 'author']
    search_fields = ['title', 'content']
    readonly_fields = ['created_at']

admin.site.register(Article, ArticleAdmin)
    

list_display controls which columns appear in the list view. list_filter adds sidebar filters. search_fields enables a search box.

Using Inlines for Related Models

Inlines let you edit related models on the same page as the parent model.


from django.contrib import admin
from .models import Article, Comment

class CommentInline(admin.TabularInline):
    model = Comment
    extra = 1

class ArticleAdmin(admin.ModelAdmin):
    inlines = [CommentInline]

admin.site.register(Article, ArticleAdmin)
    

Use TabularInline for a compact layout or StackedInline for a more spacious one. The extra field controls how many empty forms appear.

Try it Yourself โ†’

Admin Actions and Custom Methods

You can add custom actions and methods to the admin interface.


from django.contrib import admin
from .models import Article

@admin.action(description='Mark selected articles as published')
def make_published(modeladmin, request, queryset):
    queryset.update(is_published=True)

class ArticleAdmin(admin.ModelAdmin):
    list_display = ['title', 'is_published']
    actions = [make_published]

admin.site.register(Article, ArticleAdmin)
    

Custom actions appear in the admin dropdown. You can also add custom buttons and methods using changeform_view or changelist_view.

Advanced Admin Customization

You can further customize the admin with fieldsets, prepopulated fields, and date hierarchies.


class ArticleAdmin(admin.ModelAdmin):
    fieldsets = [
        ('Content', {'fields': ['title', 'content']}),
        ('Metadata', {'fields': ['author', 'created_at'], 'classes': ['collapse']}),
    ]
    prepopulated_fields = {'slug': ('title',)}
    date_hierarchy = 'created_at'
    ordering = ['-created_at']
    

fieldsets organize the edit form into sections. prepopulated_fields auto-fills values. date_hierarchy adds a date-based navigation.

๐Ÿงช Quick Quiz

What is the Django admin interface?