Как быстро и просто создать страницу с пользовательской формой для административного интерфейса Django.
Если у вас иногда возникает необходимость в административном интерфейсе Джанго обрабатывать пользовательский ввод, например, иметь возможность выполнять параметризованные задания, то вам может пригодиться новый инструмент из django-etc 1.3.0.

Отнаследуйте свой класс от etc.admin.CustomModelPage, определите в нём поля (как в модели), по которым будет создана форма на вашей новой странице. А далее остаётся лишь реализовать логику обработки пользовательских данных в .save().

    # admin.py
from etc.admin import CustomModelPage

class MyPage(CustomModelPage):

title = 'Моя страница' # Так можно указать название страницы

# Далее мы определяем поля, как в обычной модели.
my_field = models.CharField('Это поле', max_length=10)

def save(self):
# А здесь уже обрабатываем данные из self,
# например, self.my_field.

# self.bound_admin предоставляет вспомогательные методы,
# например, позволяет вывести сообщения для пользователей.

# а self.bound_request содержится объект текущего HTTP запроса.
self.bound_admin.message_success(self.bound_request, 'Очень хорошо!')

super().save()

# Регистрируем нашу страницу в админке Django.
MyPage.register()

Теперь в административном интерфейсе доступен раздел «Моя страница», после перехода в который пользователю будет предложено заполнить форму с полем «Это поле».

Создаём страницы для админки быстро и просто.

Категории

Окружение
Проект

На заметку
Читайте нас в Twitter. Ссылка в самом низу страницы.