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

Снова запусти createsuperuser, войди в систему и найди в разделе «Книги» по запросу herbert: Children of Dune и Dune.

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

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