Настройка CreateView, EditView и DeleteView
ПРИМЕЧАНИЕ: modeladmin предоставляет только функции «создание», «редактирование» и «удаление» для моделей, не являющихся типами страниц (т.е. моделей, не наследующих от wagtailcore.models.Page). Если ваша модель является моделью типа «страница», настройка любого из следующих пунктов не повлияет:
Изменение отображаемых полей в CreateView и EditView
edit_handler может использоваться с любым классом Django models.Model, так же как и с моделями Page или другими моделями, зарегистрированными как Snippets в Wagtail.
Чтобы изменить способ отображения вашей MyPageModel в CreateView и EditView, просто определите атрибут edit_handler или panels в классе вашей модели.
class MyPageModel(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
address = models.TextField()
panels = [
MultiFieldPanel([
FieldRowPanel([
FieldPanel('first_name', classname='fn'),
FieldPanel('last_name', classname='ln'),
]),
FieldPanel('address', classname='custom1',)
])
]
Или, как альтернатива:
class MyPageModel(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
address = models.TextField()
custom_panels = [
MultiFieldPanel([
FieldRowPanel([
FieldPanel('first_name', classname='fn'),
FieldPanel('last_name', classname='ln'),
]),
FieldPanel('address', classname='custom1',)
])
]
edit_handler = ObjectList(custom_panels)
# or
edit_handler = TabbedInterface([
ObjectList(custom_panels, heading='First Tab'),
ObjectList(...)
])
edit_handler и panels можно альтернативно определить в определении ModelAdmin. Эта функция особенно полезна в тех случаях, когда вам нужно работать с моделями, которые «недоступны» (например, из-за того, что они являются частью стороннего пакета).
class BookAdmin(ModelAdmin):
model = Book
panels = [
FieldPanel('title'),
FieldPanel('author'),
]
Или, как альтернатива:
class BookAdmin(ModelAdmin):
model = Book
custom_panels = [
FieldPanel('title'),
FieldPanel('author'),
]
edit_handler = ObjectList(custom_panels)
ModelAdmin.form_view_extra_css
Ожидаемое значение: Список имен путей дополнительных стилей, которые необходимо добавить в CreateView и EditView
Дополнительную информацию можно найти в следующем разделе документации: Добавление дополнительных таблиц стилей и/или JavaScript
ModelAdmin.form_view_extra_js
Ожидаемое значение: Список имен путей дополнительных js-файлов, которые необходимо добавить в CreateView и EditView
Дополнительную информацию можно найти в следующем разделе документации: Добавление дополнительных таблиц стилей и/или JavaScript
ModelAdmin.create_template_name
Ожидаемое значение: Путь к настраиваемому шаблону для использования в CreateView
Дополнительную информацию можно найти в следующем разделе документации: Переопределение шаблонов
ModelAdmin.create_view_class
Ожидаемое значение: Настраиваемый класс view для замены modeladmin.views.CreateView
Дополнительную информацию можно найти в следующем разделе документации: Переопределение представлений
ModelAdmin.edit_template_name
Ожидаемое значение: Путь к настраиваемому шаблону для использования в EditView
Дополнительную информацию можно найти в следующем разделе документации: Переопределение шаблонов
ModelAdmin.edit_view_class
Ожидаемое значение: Настраиваемый класс view для замены modeladmin.views.EditView
Дополнительную информацию можно найти в следующем разделе документации: Переопределение представлений
ModelAdmin.delete_template_name
Ожидаемое значение: Путь к настраиваемому шаблону для использования в DeleteView
Дополнительную информацию можно найти в следующем разделе документации: Переопределение шаблонов
ModelAdmin.delete_view_class
Ожидаемое значение: Настраиваемый класс view для замены modeladmin.views.DeleteView
Дополнительную информацию можно найти в следующем разделе документации: Переопределение представлений
ModelAdmin.form_fields_exclude
Ожидаемое значение: Список или кортеж имён полей
При использовании CreateView или EditView для создания или обновления экземпляров модели это значение будет передано форме редактирования, чтобы исключить поля с указанными именами из формы. Это особенно полезно при регистрации классов ModelAdmin для моделей из сторонних приложений, где определение конфигураций панели в самой модели более сложно.
ModelAdmin.prepopulated_fields
Ожидаемое значение: Словарь, сопоставляющий поля предварительной заполнения с кортежем полей для предварительной заполнения
При использовании CreateView или EditView для создания или обновления экземпляров модели поля, соответствующие ключам в словаре, предварительно заполняются полями из соответствующего кортежа. Основное применение этой функциональности заключается в автоматическом генерации значения для полей SlugField из одного или нескольких других полей. Сгенерированное значение формируется путем конкатенации значений исходных полей, а затем преобразования этого результата в допустимый слаг (например, замена пробелов на тире; приведение букв ASCII к нижнему регистру; удаление различных английских стоп-слов, таких как «a», «an», «as» и т.п.).
Поля предварительной заполнения не изменяются JavaScript после сохранения значения. Обычно нежелательно, чтобы слоги менялись (что приведет к изменению URL объекта, если слаг используется в нем).
Поля предварительной заполнения не принимают поля DateTimeField, ForeignKey, OneToOneField и ManyToManyField.
ModelAdmin.get_edit_handler()
Должно вернуть: Экземпляр wagtail.admin.edit_handlers.ObjectList
Возвращает соответствующий edit_handler для класса modeladmin. edit_handlers может быть определено либо в самой модели, либо в modeladmin (как свойство edit_handler или panels). Возвращается к извлечению определений панели/обработчика редактирования из класса модели.
© 2014-present Torchbox Ltd and individual contributors.
All rights are reserved.
Licensed under the BSD License.
https://docs.wagtail.org/en/v2.16.3/reference/contrib/modeladmin/create_edit_delete_views.html