Встроенная админка — одна из главных причин, по которой команды выбирают Django, и одновременно самая заметная его слабость: функционально она мощная, а выглядит и ощущается как интерфейс из 2010-х. Если в вашем проекте админкой пользуются менеджеры, контент-редакторы или клиенты, вопрос «как сделать современную админку Django» рано или поздно встаёт ребром. Ниже — разбор пакета django-unfold: какие проблемы стандартной админки он закрывает, что умеет из коробки, как устроены его инлайны и дашборды, на чём можно споткнуться при миграции и что изменилось в пакете за 2026 год. Статья одинаково полезна и заказчику, который решает, стоит ли обновлять админку, и разработчику, который будет это делать.
Почему стандартная админка Django выглядит устаревшей
Команда Django почти не трогает внешний вид админки с момента её появления: за двадцать лет она получила адаптивную вёрстку, тёмную тему и пару косметических правок, но структура интерфейса, фильтры и формы остались прежними. Функционально это по-прежнему сильнейший инструмент в экосистеме Python: генерация CRUD-интерфейса по моделям, права доступа, история изменений и инлайны достаются бесплатно — всё это мы разобрали в справочнике по возможностям админки Django.
Масштаб зависимости от админки хорошо виден в исследовании JetBrains «The State of Django 2026», в котором участвовали 3 500 разработчиков из более чем 40 стран. Больше половины респондентов (53%) строят на Django API-only приложения, 46% используют его как бэкенд для одностраничного приложения или отдельного JS-фронтенда, а 72% по-прежнему рендерят шаблоны на сервере. В API-only проектах Django конкурирует с FastAPI и Litestar, и один из решающих аргументов в его пользу — готовая админка, которую можно отдать команде поддержки в первый же день.
Проблема в том, что в реальных проектах админкой пользуются не только разработчики. Контент-менеджеры, служба поддержки, бухгалтерия, заказчики — все они каждый день видят серо-синий интерфейс с таблицами без единой иконки. Попыток это исправить было много: Grappelli, django-suit, Jazzmin, django-admin-interface, Baton, Jet. Большинство из них меняют только оформление, часть давно не обновляется. Первым пакетом, который довёл идею до полноценной замены, а не «перекраски», стал django-unfold.
Какие проблемы стандартной админки Django решает django-unfold
Unfold закрывает четыре группы проблем: внешний вид, навигацию, работу со списками и формами, отчётность.
| Проблема стандартной админки | Как это решает Unfold |
|---|---|
| Устаревший дизайн, нет тёмной темы для пользователя | Интерфейс на Tailwind CSS, переключатель светлой и тёмной темы, настройка фирменных цветов через COLORS |
| Плоский список приложений вместо навигации | Настраиваемый сайдбар с иконками, группами, бейджами-счётчиками и правами на каждый пункт |
| Нечем быстро найти нужную запись | Command palette по ⌘K/Ctrl+K с поиском по моделям и данным, история запросов |
| Фильтры только по чекбоксам и ссылкам | Диапазоны дат и чисел, выпадающие списки с мультивыбором, автокомплит, текстовый поиск по полю, кнопка «Применить» |
| Форма на 40 полей одним полотном | Табы для fieldsets и инлайнов, сворачиваемые секции, условные поля, компактный режим полей |
| Инлайны на сотни записей тормозят | Пагинация инлайнов, перетаскивание для сортировки, вложенные и несвязанные инлайны |
| Действия только через выпадающий список над таблицей | Кнопки в шапке списка, в строке таблицы, в карточке объекта, рядом с «Сохранить», диалоги подтверждения с формой |
| Главная страница — список моделей | Дашборд с карточками, графиками, таблицами, когортами и прогресс-барами через DASHBOARD_CALLBACK |
| Сторонние пакеты выглядят чужеродно | Готовые интеграции для import-export, guardian, simple-history, celery-beat, constance, hijack, waffle и других |
Важный момент для тех, кто оценивает риски: Unfold не заменяет django.contrib.admin, а наследуется от него. Все ваши ModelAdmin, права, list_display и сигналы продолжают работать, миграций в базе нет. Пакет поддерживает поэтапное внедрение, и в этом его главное отличие от «отдельных админок» вроде django-jet.
Что такое django-unfold и почему это лучшая тема для Django admin в 2026 году
django-unfold — open-source тема и набор расширений для админки Django, построенные на Tailwind CSS, HTMX и Alpine.js. У проекта 3,6 тысячи звёзд на GitHub, более 12 миллионов скачиваний с PyPI, релизы выходят почти каждую неделю: текущая версия 0.105 вышла 4 сентября 2026 года. Актуальные требования — Django 5.2+ и Python 3.12+.

Ключевые составляющие пакета:
- Дизайн-система на Tailwind с полной поддержкой тёмной темы и настройкой палитры под бренд.
- Сайдбар и command palette вместо плоского списка приложений.
- Расширенные фильтры, табы, действия и инлайны, которые подключаются одним атрибутом в
ModelAdmin. - Компоненты для дашбордов: карточки, графики на Chart.js, таблицы, трекеры, когорты, прогресс-бары.
- Интеграции со сторонними пакетами и шаблонный пакет для django-crispy-forms.
- Кастомные страницы и сайты для сценариев, которые не укладываются в CRUD.
Для сравнения: Jazzmin и Grappelli решают только первую задачу, django-admin-interface — первую и частично вторую. Unfold единственный из живых проектов закрывает весь список, поэтому в 2026 году он стал стандартным ответом на вопрос «какую тему для админки Django выбрать».
Как установить django-unfold и подключить его к проекту Django
Установка занимает пять минут: пакет ставится через pip, регистрируется первым в INSTALLED_APPS, а админ-классы наследуются от unfold.admin.ModelAdmin.
Порядок приложений критичен, Unfold должен стоять до django.contrib.admin, иначе его шаблоны не перекроют стандартные:
INSTALLED_APPS = [
"unfold", # обязательно до django.contrib.admin
"unfold.contrib.filters", # расширенные фильтры
"unfold.contrib.forms", # WYSIWYG и array-виджеты
"unfold.contrib.inlines", # несвязанные инлайны
"unfold.contrib.import_export", # если используете django-import-export
"django.contrib.admin",
...
]
Дальше меняется базовый класс админок. Стандартный admin.ModelAdmin продолжит работать, но формы останутся без стилей:
from unfold.admin import ModelAdmin
@admin.register(Order)
class OrderAdmin(ModelAdmin):
list_display = ["number", "customer", "status", "total"]
Модели User и Group регистрирует сам Django, поэтому их нужно перерегистрировать с формами из unfold.forms, иначе страница смены пароля будет выглядеть как раньше:
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from unfold.forms import AdminPasswordChangeForm, UserChangeForm, UserCreationForm
admin.site.unregister(User)
@admin.register(User)
class UserAdmin(BaseUserAdmin, ModelAdmin):
form = UserChangeForm
add_form = UserCreationForm
change_password_form = AdminPasswordChangeForm
Вся настройка внешнего вида живёт в одном словаре UNFOLD в настройках проекта. Минимальный набор для интернет-магазина с названием, окружением и сайдбаром выглядит так:
UNFOLD = {
"SITE_TITLE": "Demo Shop",
"SITE_HEADER": "Demo Shop",
"ENVIRONMENT": "shop.admin.environment_callback", # плашка «Production»
"SIDEBAR": {
"show_search": True,
"navigation": [
{
"title": "Продажи",
"items": [
{"title": "Заказы", "icon": "shopping_cart",
"link": reverse_lazy("admin:shop_order_changelist"),
"badge": "shop.admin.new_orders_badge"},
{"title": "Товары", "icon": "inventory_2",
"link": reverse_lazy("admin:shop_product_changelist")},
],
},
],
},
}
Бейдж — это обычная функция, которая получает request и возвращает число новых заказов: менеджер видит счётчик прямо в меню, не открывая список. Иконки берутся из Material Symbols по имени.
Обзор возможностей django-unfold: виджеты и функции
Ниже — короткий обзор каждой группы функций с примером кода там, где он помещается в несколько строк. Полные примеры есть в документации на unfoldadmin.com и в демо-проекте Formula на GitHub.
Сайдбар, command palette и переключение сайтов
Сайдбар настраивается декларативно в UNFOLD["SIDEBAR"]: группы со сворачиванием, разделители, иконки, бейджи и permission на каждый пункт. С версии 0.94 ширину сайдбара можно тянуть мышью, а с 0.97 его сворачивание висит на горячей клавише. Command palette открывается по ⌘K, по умолчанию ищет приложения и модели, а при search_models в COMMAND ищет и по данным через search_fields каждой модели. Через SITE_DROPDOWN в шапку добавляется меню для переключения между несколькими админ-сайтами или ссылок на внешние сервисы.



Фильтры для списков
Модуль unfold.contrib.filters добавляет фильтры, которых в стандартной админке нет: диапазон дат и чисел с календарём, выпадающие списки с мультивыбором и автокомплитом, текстовый поиск по одному полю, чекбоксы и радиокнопки с подсчётом результатов. Атрибут list_filter_submit = True включает кнопку «Применить», чтобы страница не перезагружалась на каждый клик.
from unfold.contrib.filters.admin import (
RangeDateFilter, RangeNumericFilter, RelatedDropdownFilter,
)
class OrderAdmin(ModelAdmin):
list_filter = [
("created_at", RangeDateFilter),
("total", RangeNumericFilter),
("customer", RelatedDropdownFilter),
]
list_filter_submit = True


Действия: кнопки в списке, строке и карточке объекта
Декоратор @action из unfold.decorators расширяет стандартный: у действия появляются иконка, цветовой вариант, права и место размещения. Действия делятся на четыре списка: actions_list над таблицей, actions_row в каждой строке, actions_detail в шапке формы и actions_submit_line рядом с «Сохранить». Действие с параметром dialog показывает модальное окно с формой и подтверждением до выполнения.
from unfold.decorators import action
from unfold.enums import ActionVariant
class OrderAdmin(ModelAdmin):
actions_row = ["mark_shipped"]
@action(description="Отправлен", icon="local_shipping",
variant=ActionVariant.SUCCESS,
permissions=["shop.change_order"])
def mark_shipped(self, request, object_id):
Order.objects.filter(pk=object_id).update(status="shipped")
return redirect(request.META["HTTP_REFERER"])


Табы для списков, форм и инлайнов
Табы бывают четырёх видов. Changelist-табы объединяют несколько моделей в одну навигацию через UNFOLD["TABS"], fieldsets-табы делаются одним классом "tab" в описании fieldset, инлайны выносятся во вкладки атрибутом tab = True, а динамические табы строятся коллбэком. Если в форме есть ошибка валидации, с версии 0.77 Unfold сам откроет вкладку с проблемным полем.
fieldsets = [
(None, {"fields": ["number", "customer", "status"]}),
("Доставка", {"classes": ["tab"], "fields": ["address", "courier"]}),
("Оплата", {"classes": ["tab"], "fields": ["payment_method", "paid_at"]}),
]




Оформление колонок через декоратор display
@display из unfold.decorators умеет больше стандартного: цветные метки для статусов, двухстрочные ячейки с аватаром, выпадающие списки внутри ячейки и, с версии 0.105, форматирование цен. Это самый дешёвый способ сделать список заказов читаемым для менеджера.
from unfold.decorators import display
@display(label={"new": "info", "paid": "success", "cancelled": "danger"})
def show_status(self, obj):
return obj.status
@display(header=True)
def show_customer(self, obj):
return [obj.customer.full_name, obj.customer.email, obj.customer.initials]
Условные поля, WYSIWYG, массивы и JSON
Условные поля скрывают часть формы по выражению Alpine.js без единой строки JavaScript: conditional_fields = {"delivery_address": "delivery_type == 'courier'"}. WYSIWYG на редакторе Trix подключается через formfield_overrides с WysiwygWidget, для ArrayField PostgreSQL есть ArrayWidget вместо текстового поля, для JSON-полей — подсветка синтаксиса и интеграция с django-json-widget. С версии 0.88 компактный режим полей compressed_fields включён по умолчанию: подпись и поле стоят в одну строку, форма на 30 полей помещается в экран.



Раскрывающиеся строки, датасеты и метка окружения
list_sections добавляет в таблицу стрелку, по которой строка раскрывается: TableSection показывает связанные записи (позиции заказа под заказом), TemplateSection рендерит произвольный шаблон. Датасеты решают обратную задачу: показывают полноценный changelist со своим поиском и пагинацией внутри формы объекта, например все заказы клиента на странице клиента. Метка окружения через ENVIRONMENT красит шапку в красный на проде — простая настройка, которая спасает от случайного удаления записи не в той базе.

Инлайны в Unfold: чем они отличаются от стандартных
Главное отличие: инлайны нужно наследовать от unfold.admin.TabularInline и StackedInline, а не от классов Django, иначе они отрисуются без стилей. Взамен инлайны получают набор атрибутов, которых в стандартной админке нет.
| Атрибут | Что делает |
|---|---|
collapsible = True |
Инлайн свёрнут по умолчанию, раскрывается автоматически при ошибке валидации |
show_title = False |
Скрывает заголовок инлайна (до версии 0.104 назывался hide_title) |
show_count = True |
Показывает счётчик записей, текст и цвет можно переопределить через get_count |
ordering_field = "weight" |
Сортировка перетаскиванием; поле должно быть PositiveIntegerField с db_index=True |
hide_ordering_field = True |
Прячет само поле веса, оставляя только ручку для перетаскивания |
per_page = 20 |
Пагинация инлайна для моделей с сотнями связанных записей |
tab = True |
Выносит инлайн в отдельную вкладку формы |
inlines = [...] |
Вложенные инлайны, один уровень вложенности, без many-to-many |
Пример инлайна позиций заказа с сортировкой и пагинацией:
from unfold.admin import TabularInline
class OrderItemInline(TabularInline):
model = OrderItem
fields = ["sku", "quantity", "price"]
ordering_field = "position"
hide_ordering_field = True
per_page = 20
show_count = True
Два особых типа инлайнов стоит знать отдельно. Nonrelated inlines из unfold.contrib.inlines показывают под объектом записи без внешнего ключа на него: реализуется два метода, get_form_queryset и save_new_instance, а остальное делает Unfold. Nested inlines появились в версии 0.85 и позволяют показать под заказом позиции, а под каждой позицией её комплектующие, но ровно один уровень вниз. Ещё одна оговорка про сортировку: перетаскивать можно только сохранённые записи, новые строки сначала нужно сохранить.
В стандартной админке ничего из этого нет, а кастомные решения через сторонние пакеты (django-nested-admin, django-admin-sortable2) с Unfold не совместимы. Если проект на них завязан, план миграции должен учитывать переписывание этих инлайнов на встроенные механизмы Unfold.


Дашборды, отчёты и графики в админке Django на Unfold
Дашборд в Unfold собирается из трёх частей: коллбэка, который готовит данные, шаблона главной страницы и библиотеки компонентов. Отдельного Python-класса дашборда нет, и это плюс: разработчик пишет обычную функцию и обычный Django-шаблон.
Коллбэк указывается в настройках и получает request и context. Для магазина в него удобно положить метрики за 30 дней и данные для графика в формате Chart.js:
def dashboard_callback(request, context):
days = Order.objects.daily_totals(last=30) # [(date, sum), ...]
context.update({
"kpi": [
{"title": "Заказы за 30 дней", "metric": Order.objects.recent().count()},
{"title": "Выручка", "metric": f"{Order.objects.revenue():,.0f} ₽"},
],
"orders_chart": json.dumps({
"labels": [d.strftime("%d.%m") for d, _ in days],
"datasets": [{"label": "Заказы", "data": [total for _, total in days]}],
}),
})
return context
Шаблон templates/admin/index.html наследуется от admin/base.html и раскладывает компоненты по сетке Tailwind:
{% extends "admin/base.html" %}
{% load unfold %}
{% block content %}
<div class="flex gap-8 mb-8">
{% for card in kpi %}
{% component "unfold/components/card.html" with title=card.title %}
{% component "unfold/components/text.html" %}{{ card.metric }}{% endcomponent %}
{% endcomponent %}
{% endfor %}
</div>
{% component "unfold/components/card.html" with title="Динамика заказов" %}
{% component "unfold/components/chart/line.html" with data=orders_chart height=320 %}{% endcomponent %}
{% endcomponent %}
{% endblock %}
Помимо карточек и графиков в наборе есть table.html для таблиц с сортировкой, tracker.html для «полоски здоровья» сервиса по дням, cohort.html для когортного анализа удержания клиентов и progress.html для выполнения плана. Версия 0.105 добавила настройки графиков: подписи осей, лимит делений, суффикс валюты на оси Y и произвольный объект options для Chart.js.



Когда одной главной страницы мало, в админку добавляются кастомные страницы: класс-представление с миксином UnfoldModelAdminViewMixin, title и permission_required, зарегистрированный в get_urls конкретного ModelAdmin. Так делаются отчёты по менеджерам, сверки с 1С или страница массовой загрузки прайса, которые живут внутри админки с её авторизацией и навигацией. Для сценария «одна кодовая база, несколько админок» с версии 0.99 есть SITE_VIEWS и кастомные сайты на UnfoldAdminSite: например, отдельная урезанная админка для партнёров на своём URL.
Гибкие сценарии: для чего ещё подходит админка на Unfold
Unfold превращает админку из инструмента «для разработчиков на случай чего» в полноценное внутреннее приложение. Типичные сценарии, где это окупается:
- Бэкофис интернет-магазина. Заказы с цветными статусами, действия «Отправить» и «Вернуть деньги» в строке, датасет с историей заказов на странице клиента, дашборд с выручкой по дням.
- CRM и поддержка. Интеграция с django-hijack (появилась в 0.95) даёт кнопку «Войти как пользователь» прямо в списке; django-guardian добавляет права на конкретные объекты, а не на модель целиком.
- Контент и каталог. WYSIWYG для описаний,
ArrayWidgetдля тегов, сортируемые инлайны для галерей, django-import-export для загрузки прайсов из Excel в интерфейсе с предпросмотром различий. - Операционный контроль. django-celery-beat для расписания фоновых задач, django-constance для настроек без деплоя, django-waffle (поддержка с 0.103) для фича-флагов, django-simple-history для аудита изменений с диффом.
- Мультитенантность. Несколько
UnfoldAdminSiteс разными сайдбарами и правами: одна админка для сотрудников, вторая для партнёров, третья для клиентов с доступом только к своим данным.




Возможные проблемы при замене стандартной админки на django-unfold
Переход на Unfold в существующем проекте занимает от пары часов до нескольких дней, и почти всё время уходит не на сам пакет, а на то, что вокруг него. До начала стоит пройтись по списку.
- Сторонние пакеты с собственными шаблонами. Всё, что рисует свои страницы в админке, без адаптации будет выглядеть как старая админка внутри новой. Для одиннадцати популярных пакетов есть готовые модули
unfold.contrib.*, но, например, django-celery-beat требует перерегистрировать свои модели сunfold.admin.ModelAdminи собственной формой. Пакеты вне списка (django-nested-admin, django-admin-sortable2, старые редакторы вроде django-ckeditor) придётся заменять или стилизовать вручную. - Свои переопределённые шаблоны админки. Если в проекте лежит
templates/admin/change_form.htmlиз 2019 года, он перекроет шаблон Unfold и сломает вёрстку. Такие файлы нужно переписать под блоки Unfold или удалить. - Версии Django и Python. В 2026 году пакет снял поддержку Django 4.2 (версия 0.90), 5.0 (0.91) и 5.1 (0.97), а также Python 3.10 (0.82) и 3.11 (0.92). На старом стеке остаётся только закрепить старую версию Unfold и жить без обновлений, поэтому обновление Django лучше запланировать в тот же проект.
- Частые релизы и переименования. Пакет выпускает версии почти еженедельно, и часть изменений ломающие:
hide_titleсталshow_title, компактные поля включили по умолчанию, а обратную опцию убрали, интеграцию с django-modeltranslation объявили устаревшей. Закрепляйте точную версию в зависимостях и читайте changelog перед каждым обновлением. - Собственные Tailwind-классы. Unfold поставляет скомпилированный CSS только для своих шаблонов. Если в кастомной странице или дашборде вы используете классы, которых там нет, их придётся собрать своим Tailwind CLI и подключить через
STYLES. - Кастомные
list_filterи виджеты форм. Самописные фильтры и виджеты, наследованные от классов Django, будут работать, но без стилей. Обычно их проще переписать на аналоги изunfold.contrib.
Для больших проектов команда Unfold описывает безопасную стратегию: поднять второй UnfoldAdminSite на отдельном URL и переносить модели по одной, пока старая админка продолжает работать. Так менеджеры не остаются без инструмента ни на день. Если у вас нет времени проходить этот путь самостоятельно, мы делаем современные админки на Unfold и для новых проектов, и для существующих, включая аудит зависимостей и поэтапную миграцию, — пишите нам через форму на сайте.
Что изменилось в django-unfold в 2026 году
За восемь месяцев 2026 года вышло больше тридцати версий, с 0.75 до 0.105, и это не только косметика: появились вложенные инлайны, диалоги подтверждения, горизонтальные фильтры, кастомные сайты и переработанный дизайн почти всех экранов.
- Январь 20260.75–0.77: переход на uv, django-json-widget
Сборка проекта переехала с Poetry на uv, появилась интеграция с django-json-widget, форма сама открывает вкладку с ошибкой.
- Февраль 20260.78–0.81: новые кнопки, аватары и Tailwind 4.2
Переработанные кнопки и аватар пользователя, переключатель видимости пароля, чекбоксы и радиокнопки в новом дизайне.
- Март 20260.82–0.87: вложенные инлайны и компоненты
Nested inlines, счётчик записей в инлайнах, компонент Link, красивые трейсбеки, глобальный коллбэк, снята поддержка Python 3.10.
- Апрель 20260.88–0.91: диалоги подтверждения
Компактные поля по умолчанию, шаблоны до и после инлайна, диалог подтверждения для действий, снята поддержка Django 4.2 и 5.0.
- Май 20260.92–0.94: горизонтальные фильтры и сайдбар
Горизонтальная раскладка фильтров, редизайн fieldset-табов, изменяемая ширина сайдбара, действия в строке как кнопки, снят Python 3.11.
- Июнь 20260.95–0.99: hijack, новый command palette, кастомные сайты
Поддержка django-hijack, переработанные command palette и stacked-инлайны, горячие клавиши сайдбара, SITE_VIEWS, снята поддержка Django 5.1.
- Июль 20260.100–0.102: редизайн таблиц и интеграций
Новая таблица changelist, переработанные экраны guardian, history, import-export и simple-history, список горячих клавиш, версия сайта в шапке, deprecated modeltranslation.
- Август 20260.103–0.104: Django 6.1 и waffle
Поддержка Django 6.1 и django-waffle, переименование hide_title в show_title, кастомные иконки и CSS-классы бейджей в сайдбаре.
- 4 сентября 20260.105: новый дашборд по умолчанию
Переработанные дашборд, фильтры и WYSIWYG, настройки графиков, форматирование цен в display, анимации модальных окон, убраны JS-зависимости фильтров.
Если сжать лето в три строки: в июне Unfold стал заметно удобнее для клавиатуры (command palette, шорткаты, история поиска), в июле получил единый дизайн для всех сторонних интеграций и таблиц, а в августе и начале сентября догнал Django 6.1 и переработал главную страницу. Для команд, которые сидели на версии 0.6x с 2025 года, это повод обновиться, но только после прочтения списка переименований из предыдущего раздела.
Что дальше
- Если вы ещё не выжали максимум из стандартных
ModelAdmin— фильтров, экшенов, инлайнов, прав и переопределения шаблонов — начните со справочника по админке Django: половина задач решается без смены темы. - Если дашборды в админке становятся аналитическим инструментом для бизнеса, посмотрите, где заканчиваются возможности отчётов в приложении и начинается работа с данными: «Может ли LLM заменить аналитика».
- Если
DASHBOARD_CALLBACKуже не хватает и нужна интерактивная аналитика с фильтрами и drill-down для пользователей, посмотрите обзор Apache Superset — там же пример встраивания его дашбордов в страницу на Django черезUnfoldModelAdminViewMixin.
Коротко
Что такое django-unfold и чем он отличается от стандартной админки Django?
Тема и набор расширений поверх django.contrib.admin, а не отдельный фреймворк. Ваши ModelAdmin, права и модели остаются на месте, а интерфейс получает дизайн на Tailwind, тёмную тему, сайдбар, фильтры, табы и дашборды.
Как установить django-unfold в существующий проект Django?
Поставить пакет, добавить unfold в INSTALLED_APPS перед django.contrib.admin, заменить базовый класс админок на unfold.admin.ModelAdmin и перерегистрировать User и Group с формами из unfold.forms. Для сторонних пакетов подключаются модули unfold.contrib.*.
Можно ли сделать дашборд с графиками в админке Django?
Да: DASHBOARD_CALLBACK передаёт данные в шаблон главной страницы, а компоненты Unfold рисуют карточки, графики на Chart.js, таблицы, трекеры и когорты. Для сложных отчётов есть кастомные страницы через UnfoldModelAdminViewMixin.
Какие сторонние пакеты совместимы с django-unfold?
Из коробки: django-import-export, django-guardian, django-simple-history, django-constance, django-celery-beat, django-money, django-location-field, djangoql, django-json-widget, django-hijack, django-waffle. Остальные пакеты со своими шаблонами без адаптации выглядят как старая админка.
Какие версии Django и Python нужны для django-unfold?
Версия 0.105 требует Django 5.2+ и Python 3.12+. Поддержка Django 4.2, 5.0, 5.1 и Python 3.10, 3.11 снята в течение 2026 года, на старом стеке придётся закрепить более раннюю версию пакета.
Стоит ли переходить на Unfold с Jazzmin, Grappelli или django-admin-interface?
Да, если админкой пользуются не только разработчики и нужны дашборды, кастомные действия и современный UX. Jazzmin и Grappelli меняют в основном внешний вид, Unfold добавляет функциональность, но требует свежего Django и активно меняется от версии к версии.