← Back to Chapters

Registering Models in admin.py

?️ Registering Models in admin.py

? Quick Overview

Django provides a powerful built-in admin interface. By registering models in admin.py, you can manage application data through a clean and secure UI without writing custom dashboards.

? Key Concepts

  • Admin site auto-generated by Django
  • Model registration using admin.site.register()
  • Custom admin behavior with ModelAdmin
  • Inline admin for related models

? Syntax / Theory

The admin.py file controls how models appear and behave in the Django Admin dashboard. Models must be explicitly registered to become visible.

? Code Example – Basic Registration

? View Code Example
# Import Django admin module
from django.contrib import admin
from .models import Product

# Register Product model to appear in admin panel
admin.site.register(Product)

? Customizing the Admin Interface

To control how models are displayed, define a custom ModelAdmin class and pass it during registration.

? View Code Example
# Import admin tools
from django.contrib import admin
from .models import Product

# Custom admin configuration for Product
class ProductAdmin(admin.ModelAdmin):
    list_display = ('name', 'price', 'stock')
    search_fields = ('name',)

# Register model with custom admin options
admin.site.register(Product, ProductAdmin)

? Interactive: list_display Simulator

Toggle the checkboxes below to see how adding fields to list_display affects both the Python code and the Admin Dashboard view.

Generated Python Code
class ProductAdmin(admin.ModelAdmin):
list_display = ('id', 'name', 'price')
Admin Dashboard Preview
ID Name Category Price Stock
101 Gaming Laptop Electronics $1200 15
102 Wireless Mouse Accessories $45 50

? Inline Model Admin

Inline admin allows managing related models directly inside a parent model’s admin page.

? View Code Example
# Import required modules
from django.contrib import admin
from .models import Order, Product

# Inline admin for products inside orders
class ProductInline(admin.TabularInline):
    model = Order.products.through
    extra = 1

# Order admin using inline products
class OrderAdmin(admin.ModelAdmin):
    inlines = [ProductInline]

# Register Order with inline configuration
admin.site.register(Order, OrderAdmin)

? Live Output / Explanation

Once registered, models appear in the Django Admin sidebar. Custom fields, search boxes, and inline forms become instantly available without extra UI coding.

? Use Cases

  • Managing products in e-commerce applications
  • Handling users, roles, and permissions
  • Content moderation dashboards
  • Internal admin tools

✅ Tips & Best Practices

  • Always use list_display for better readability
  • Enable search_fields for large datasets
  • Use inline admin to reduce navigation overhead

? Try It Yourself

  • Create a new model and register it in admin.py
  • Add filters and ordering options
  • Experiment with inline models for relationships