Django

Django Admin

ModelAdmin, inlines, and actions

Django Admin

# tasks/admin.py
from django.contrib import admin
from .models import Project, Task, Tag

class TaskInline(admin.TabularInline):
    model = Task
    extra = 0

@admin.register(Project)
class ProjectAdmin(admin.ModelAdmin):
    list_display = ("name", "owner", "created_at")
    list_filter = ("owner",)
    search_fields = ("name",)
    inlines = [TaskInline]

@admin.register(Task)
class TaskAdmin(admin.ModelAdmin):
    list_display = ("title", "project", "priority", "is_done")
    list_filter = ("is_done", "priority", "project")
    search_fields = ("title",)
    actions = ["mark_done"]

    @admin.action(description="Mark selected as done")
    def mark_done(self, request, queryset):
        queryset.update(is_done=True)

Staff use admin for support; product UI still uses your views and permissions.