Как зарегистрировать модель в админ-панели Django

Ответ

Регистрация моделей для админ-панели Django происходит в файле admin.py соответствующего приложения. Существует два основных способа: простая регистрация и регистрация с кастомизацией через класс ModelAdmin.

Способ 1: Простая регистрация

Это самый быстрый способ, который добавляет модель в админку с настройками по умолчанию.

# myapp/admin.py
from django.contrib import admin
from .models import Article

# Регистрация модели Article
admin.site.register(Article)

Способ 2: Регистрация с кастомизацией (ModelAdmin)

Для настройки отображения и поведения модели в админ-панели создается класс, наследуемый от admin.ModelAdmin. Рекомендуется использовать декоратор @admin.register().

Этот подход позволяет:

  • Настроить отображаемые в списке поля (list_display).
  • Добавить фильтры (list_filter).
  • Включить поиск (search_fields).
# myapp/admin.py
from django.contrib import admin
from .models import Article

@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
    """ 
    Класс для кастомизации представления модели Article в админ-панели.
    """
    # Поля, которые будут отображаться в списке объектов
    list_display = ('title', 'author', 'status', 'publish_date')

    # Поля для фильтрации сбоку
    list_filter = ('status', 'author')

    # Поля, по которым будет работать поиск
    search_fields = ('title', 'content')

    # Автоматическое заполнение слага из заголовка
    prepopulated_fields = {'slug': ('title',)}

Результат: После регистрации и запуска сервера модель станет доступна для управления в админ-панели (по умолчанию /admin), но только для пользователей со статусом is_staff.

Ответ 18+ 🔞

Да ты посмотри, что творят эти ваши джангошники, блядь! Регистрация моделей в админке — это ж не просто так, «импортируй и зарегистрируй», тут целая философия, ёпта!

Вот сидит админ, как царь в палатах, а ему подавай всё красиво, с фильтрами да поиском, а не просто список, где нихуя не найти. Так что слушай сюда, как это делается, чтобы не выглядеть конченым распиздяем.

Способ первый, для ленивых (или когда похуй): Просто берёшь модель и тыкаешь её в админку, как есть. Ни тебе настроек, ни кастомизации — голый зад на ветру.

# myapp/admin.py
from django.contrib import admin
from .models import Article

# И всё, пиздец. Зарегистрировал и забыл.
admin.site.register(Article)

Работает? Работает. Удобно? Ну, если тебе похуй, как это выглядит, и ты готов вручную ковыряться в тысяче записей — то да. Но мы же не животные, блядь!

Способ второй, для адекватных людей (с кастомизацией): Вот тут уже начинается магия, ёбана! Создаёшь класс, настраиваешь, чтобы всё летало. Рекомендую декоратор @admin.register() — это красиво и модно.

# myapp/admin.py
from django.contrib import admin
from .models import Article

@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
    """ 
    Вот это уже серьёзно, блядь. Тут мы делаем админку удобной, а не просто свалку данных.
    """
    # Какие поля показывать в списке? Чтобы глаза не ебали, выбираем самое важное.
    list_display = ('title', 'author', 'status', 'publish_date')

    # Фильтры сбоку, чтобы не ебаться с поиском по датам или статусам.
    list_filter = ('status', 'author')

    # Поиск, блядь! Чтобы не скроллить до усрачки, а сразу найти статью по названию или содержанию.
    search_fields = ('title', 'content')

    # Автозаполнение слага — чтобы не вбивать руками эту хуйню каждый раз.
    prepopulated_fields = {'slug': ('title',)}

И что в итоге, спросишь ты?
А в итоге, после запуска сервера, твоя модель красуется в админке (обычно на /admin), но только для тех, у кого is_staff=True. То есть не для всякого сброда, а только для избранных, блядь! Всё чётко, удобно и без лишних телодвижений.