Каждому динамическому сайту пользователи просят сделать админку. Удобно редактировать модели, добавлять новые с помощью графического интерфейса. Это позволяет не залезать в базу данных и не писать вручную sql-запросы. Действия с объектами всегда одинаковые: создать, изменить, удалить.
Одна из сильных сторон Django - админка из коробки. Её можно легко кастомизировать, просто отнаследовавшись от стандартной формы.
Есть две модели в БД: автомобиль (марка, модель), обзорная статья (автомобиль, заголовок статьи, текст обзора). Нужно сделать админку:
- С выводом в таблицу списка объектов.
- Добавить поиск по названиям и заголовкам и фильтры по основным полям.
- Для модели автомобиля добавить кастомное поля, в котором выводить количество статей про данный автомобиль.
- Русифицировать отображение название моделей в админке (
car
->машина
). - Поменять порядок вывода объектов в списке (например от элемента с большим id к элементу с меньшим). Тогда новые записи будут наверху.
В качестве виджета для редактирования текста в админке стоит CKEditor.
Для его установки требуется установить пакет для python django-ckeditor
.
Затем требуется загрузить нужные js и прочие файлы командой:
python manage.py collectstatic
Для задания готов небольшой список данных для тестов. Их можно загрузить коммандой:
python manage.py loaddata app.json
Как изменять админку можно подсмотреть в документации.
Так же удобно смотреть какие поля есть в оригинальной модели admin.ModelAdmin
в PyCharm.
Достаточно кликнуть ctrl + левая кнопка мыши на название модели и мы увидим исходный код Django.
Там тот же python. Только мы не можем его менять, так это сторонняя библиотека и при переустановке изменения потеряются.
Часто пользователям не хватает стандартного виджета редактирования текста: в нём приходится вводить html-теги вручную. Тут на помощь приходит CKEditor. https://github.com/django-ckeditor/django-ckeditor
Кроме установки, просят еще добавить новые кнопки на панель инструментов.
Настройки задаются в файле settings.py
.
Предлагаю самостоятельно разобраться с настройкой и вывести кнопки на панель CKEditor.