Ответ
Регистрация моделей для админ-панели 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. То есть не для всякого сброда, а только для избранных, блядь! Всё чётко, удобно и без лишних телодвижений.