📝 Django

Django Admin: обзор

P
Автор
Pyland
📅
Опубликовано
30.06.2026
⏱️
Время чтения
1 мин
👁️
Просмотров
85
🌱
Уровень
Начальный
🐦 💼 ✈️

Django Admin — встроенная панель управления для работы с данными через браузер.

Подключение модели

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

admin.site.register(Task)
admin.site.register(Project)

Теперь модели доступны по /admin/.

ModelAdmin — настройка отображения

@admin.register(Task)
class TaskAdmin(admin.ModelAdmin):
    list_display = ['title', 'status', 'owner', 'created_at']
    list_filter = ['status', 'priority']
    search_fields = ['title', 'owner__username']
    ordering = ['-created_at']
    date_hierarchy = 'created_at'

list_display и list_editable

@admin.register(Task)
class TaskAdmin(admin.ModelAdmin):
    list_display = ['title', 'status', 'priority']
    list_editable = ['status', 'priority']  # редактирование прямо в списке

fieldsets — группировка полей

@admin.register(Task)
class TaskAdmin(admin.ModelAdmin):
    fieldsets = [
        ('Основное', {'fields': ['title', 'description']}),
        ('Параметры', {'fields': ['status', 'priority', 'owner', 'project']}),
        ('Даты', {'fields': ['due_date'], 'classes': ['collapse']}),
    ]

search_fields и list_filter

search_fields — полнотекстовый поиск по указанным полям. Поддерживает обращение через связи (owner__username). Django добавляет LIKE запрос к каждому полю.

list_filter — боковая панель с фильтрами. Работает с полями-выборками, булевыми полями, ForeignKey и датами.

@admin.register(Task)
class TaskAdmin(admin.ModelAdmin):
    search_fields = ['title', 'description', 'owner__email']
    list_filter = ['status', 'priority', 'project', 'created_at']

readonly_fields

Поля только для чтения — показываются на странице редактирования, но не принимают ввод:

@admin.register(Task)
class TaskAdmin(admin.ModelAdmin):
    readonly_fields = ['created_at', 'updated_at', 'slug']
    fieldsets = [
        ('Основное', {'fields': ['title', 'description']}),
        ('Служебное', {'fields': ['slug', 'created_at', 'updated_at']}),
    ]

Полезно для автогенерируемых полей, которые не должны редактироваться вручную.

Кастомные действия (actions)

Действия применяются к выбранным объектам в списке. Пример — массовая смена статуса:

@admin.action(description='Отметить как выполненные')
def mark_done(modeladmin, request, queryset):
    queryset.update(status='done')

@admin.action(description='Отметить как отменённые')
def mark_cancelled(modeladmin, request, queryset):
    queryset.update(status='cancelled')

@admin.register(Task)
class TaskAdmin(admin.ModelAdmin):
    list_display = ['title', 'status']
    actions = [mark_done, mark_cancelled]

После регистрации действия появляются в выпадающем меню над списком объектов. Пользователь выбирает нужные строки, выбирает действие и нажимает «Выполнить».

save_model — перехват сохранения

save_model вызывается при сохранении объекта через Admin. Позволяет добавить логику: проставить автора, отправить уведомление, записать лог:

@admin.register(Task)
class TaskAdmin(admin.ModelAdmin):
    def save_model(self, request, obj, form, change):
        if not change:
            # Новый объект — проставить владельца
            obj.owner = request.user
        super().save_model(request, obj, form, change)

Параметр change: False — создание нового объекта, True — редактирование существующего.

Создание суперпользователя

python manage.py createsuperuser

Затем открой /admin/ и войди с созданными данными.

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

pytest-django: тестирование Django

Охватываемые темы: Установка, @pytest.mark.djangodb, Фикстуры, Тестирование views.

📅 30.06.2026 👁️ 132
📝

Django: Теги шаблонов

Теги шаблонов — это логика внутри HTML. В отличие от {{ переменная }}, которая только...

📅 30.06.2026 👁️ 85
📝

Django: Статические файлы

Статические файлы — CSS, JavaScript, изображения, шрифты. Django обрабатывает их особым образом: в разработке раздаёт...

📅 30.06.2026 👁️ 73

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!