Unfold Admin Development 是一个面向 Django 项目的后台开发技能,用于在 Django 中使用 Unfold 构建现代管理界面,并结合 HTMX 进行定制化。它的核心原则包括:一个 admin 对应一个文件,即每个 ModelAdmin 放在独立文件中;继承 Unfold 的基类,即扩展 UnfoldAdmin 类;使用 HTMX 实现动态交互;仪表盘优先,通过自定义仪表盘进行数据可视化;保持一致的 Tailwind CSS 类。
安装方式为:pip install django-unfold。
配置方面,资料给出了 config/settings.py(配合 Dynaconf)的示例。INSTALLED_APPS 中需要加入 unfold、unfold.contrib.filters、unfold.contrib.forms、unfold.contrib.inlines,unfold.contrib.import_export 为可选,以及 django.contrib.admin 和其他应用。UNFOLD 字典可配置 SITE_TITLE、SITE_HEADER、SITE_URL、SITE_SYMBOL、SHOW_HISTORY、SHOW_VIEW_ON_SITE、ENVIRONMENT、COLORS(含 primary 的 50 至 950 色阶)以及 SIDEBAR(show_search、show_all_applications、navigation 导航项)。同时提供 environment_callback 函数示例,用于根据当前环境显示 Production、Staging 或 Development 徽章。
在后台结构上,建议按 myapp/admin/ 组织,包含 init.py 用于注册所有 admin、base.py 存放基类、user.py、product.py、order.py 等各自独立文件。基础 admin 类继承 unfold.admin.ModelAdmin,示例中设置 list_per_page、show_full_result_count、compressed_fields、warn_unsaved_form,并在 get_queryset 中默认排除软删除数据。还给出只读 admin 类,通过 is_add_permission、has_change_permission、has_delete_permission 返回 False 实现。
ModelAdmin 模板展示了 @admin.register(User) 的写法,包含 list_display、list_filter、search_fields、ordering、readonly_fields、fieldsets,以及使用 unfold.decorators.display 装饰器为状态字段设置标签颜色。注册方式为在 admin/init.py 中导入各 Admin 类并定义 all。
显示装饰器方面,@display 可设置 description、label(值为 success、warning、danger 等)、ordering 以及 header 参数,便于输出带样式的状态、金额与操作按钮。过滤器支持 RangeDateFilter、RangeDateTimeFilter、SingleNumericFilter、RangeNumericFilter、SliderNumericFilter、DropdownFilter、ChoicesDropdownFilter、RelatedDropdownFilter、AutocompleteSelectFilter 等,并给出在 list_filter 中使用元组指定过滤器类的示例。内联后台提供 TabularInline 与 StackedInline,示例展示如何在 OrderAdmin 中配置 OrderItemInline。
此外,资料还提到 HTMX 动作模式与自定义仪表盘,详见 references/customization.md,其中包含动态字段更新、内联动作、模态对话框与实时搜索等模式,以及 dashboard 设置与自定义部件。相关技能包括 django-dev(核心 Django 模式)与 django-dev-test(测试后台功能)。