Настройка 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 на основе одного или нескольких других полей. Сгенерированное значение формируется путем конкатенации значений исходных полей, а затем преобразования этого результата в допустимый slug (например, замена пробелов на дефисы, приведение ASCII букв к нижнему регистру и удаление различных английских стоп-слов, таких как «a», «an», «as» и подобных).
Поля предварительной заполненности не изменяются JavaScript после сохранения значения. Обычно нежелательно, чтобы слоги изменялись (что приведет к изменению URL объекта, если slug используется в нем).
prepopulated_fields не принимает поля DateTimeField, ForeignKey, OneToOneField и ManyToManyField.
ModelAdmin.get_edit_handler()
Должен вернуть: экземпляр wagtail.admin.panels.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/v3.0.3/reference/contrib/modeladmin/create_edit_delete_views.html