From fls
Configure Django admin with Unfold and SiteAwareModelAdmin. Use when creating/modifying admin classes, working with inlines, or when the user mentions admin interface.
How this skill is triggered — by the user, by Claude, or both
Slash command
/fls:admin-interfaceThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use Unfold instead of default Django admin for all ModelAdmin classes.
Use Unfold instead of default Django admin for all ModelAdmin classes.
from unfold.admin import ModelAdmin, TabularInline
@admin.register(MyModel)
class MyModelAdmin(ModelAdmin):
...
Use Unfold inlines:
from unfold.admin import TabularInline, StackedInline
# NOT Django's admin.TabularInline
All site-aware models MUST use SiteAwareModelAdmin:
from freedom_ls.site_aware_models.admin import SiteAwareModelAdmin
@admin.register(Topic)
class TopicAdmin(SiteAwareModelAdmin):
list_display = ("title", "subtitle")
# site field automatically excluded
What it does:
site field from formsunfold.admin.ModelAdminLocation: freedom_ls/site_aware_models/admin.py
Rule: Never display or allow editing of site field in admin
For models requiring object-level permissions:
from guardian.admin import GuardedModelAdmin
@admin.register(Cohort)
class CohortAdmin(GuardedModelAdmin):
list_display = ["name"]
search_fields = ["name"]
exclude = ["site"] # Required for site-aware models
Note: GuardedModelAdmin does NOT inherit from SiteAwareModelAdmin, so you must manually exclude = ["site"] for site-aware models.
@admin.register(Model)
class ModelAdmin(SiteAwareModelAdmin):
list_display = ("field1", "field2")
search_fields = ("field1", "field2__related")
list_filter = ("category", "created_at")
readonly_fields = ("slug", "created_at")
exclude = ["site"] # Only if not using SiteAwareModelAdmin
from unfold.admin import TabularInline
class ChildInline(TabularInline):
model = Child
extra = 0
fields = ("field1", "field2")
autocomplete_fields = ["foreign_key"]
@admin.register(Parent)
class ParentAdmin(SiteAwareModelAdmin):
inlines = [ChildInline]
@admin.register(Model)
class ModelAdmin(SiteAwareModelAdmin):
fieldsets = (
(None, {"fields": ("title", "description")}),
("Metadata", {
"fields": ("meta", "tags"),
"classes": ("collapse",)
}),
)
@admin.register(Student)
class StudentAdmin(SiteAwareModelAdmin):
list_display = ["get_full_name", "get_email"]
def get_full_name(self, obj):
return f"{obj.user.first_name} {obj.user.last_name}".strip()
get_full_name.short_description = "Full Name"
get_full_name.admin_order_field = "user__first_name"
SiteAwareModelAdmin for site-aware modelssite field in admin interfaceautocomplete_fields for ForeignKey/M2M to avoid loading all optionsreadonly_fields for auto-generated fields (slug, timestamps)fieldsets to organize complex formsnpx claudepluginhub preludetech/django-craftSets up Django Unfold admin with one-admin-per-file organization, HTMX dynamics, Tailwind styling, custom dashboards, and configuration patterns.
Enhances Django admin UIs with Unfold theme using Tailwind, HTMX, and Alpine.js. Covers ModelAdmin, actions, filters, widgets, dashboards, sidebars, and site configuration for django-unfold customization.
Complete reference for all 33 Django framework components including Models, Views, Templates, Forms, Admin, Auth, Caching, and more. Covers ORM patterns, class-based views, middleware, signals, and deployment for Python 3.10+ and Django 6.0.