Menu
CoddyTech

Настройка панели администратора

Часть раздела Модели и панель администратора путешествия по Django на Coddy. Урок 21 из 23.

В списке книг в админке есть только один столбец — __str__ каждой книги, — и нет возможности что-либо найти. Класс ModelAdmin, зарегистрированный с помощью декоратора, позволяет это изменить. Для Loan с внешним ключом book:

@admin.register(Loan)
class LoanAdmin(admin.ModelAdmin):
    list_display = ["book", "friend", "lent_on", "returned"]
    search_fields = ["friend", "book__title"]
    list_filter = ["returned", "lent_on"]

list_display задаёт столбцы; в столбце внешнего ключа отображается __str__ связанной записи, а поле «многие ко многим» не может быть столбцом. search_fields добавляет поле поиска. Чтобы искать по внешнему ключу, укажи поле другой модели после двух подчёркиваний: book__title. Сам по себе book — это ссылка, а не текст, и при поиске это приводит к ошибке. list_filter добавляет боковую панель с фильтрами.

Декоратор делает то же самое, что и admin.site.register(Loan, LoanAdmin). Регистрируй каждую модель только один раз: повторная регистрация остановит сайт с ошибкой AlreadyRegistered.

challenge icon

Задание

Легко

В books/admin.py назначьте Book класс BookAdmin вместо обычной регистрации. В списке книг должны быть:

  • столбцы title, author, year, genre и is_read
  • поле поиска, которое находит книги по названию или имени автора
  • боковая панель с фильтрами по genre и is_read

Нажмите «Запустить», войдите снова и выполните поиск по запросу herbert.

Попробуйте сами

from django.contrib import admin

from .models import Author, Book, Tag

admin.site.register(Book)
admin.site.register(Author)
admin.site.register(Tag)
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Модели и панель администратора

Потренируйтесь самостоятельно: Песочница Django