wagtail/docs/reference/contrib/modeladmin/create_edit_delete_views.rst

153 wiersze
4.6 KiB
ReStructuredText

===========================================================
Customising ``CreateView``, ``EditView`` and ``DeleteView``
===========================================================
**NOTE:** ``modeladmin`` only provides 'create', 'edit' and 'delete'
functionality for non page type models (i.e. models that do not extend
``wagtailcore.models.Page``). If your model is a 'page type' model, customising
any of the following will not have any effect:
.. _modeladmin_edit_handler_customisation:
-------------------------------------------------------------
Changing which fields appear in ``CreateView`` & ``EditView``
-------------------------------------------------------------
``edit_handler`` can be used on any Django models.Model class, just like it
can be used for ``Page`` models or other models registered as ``Snippets`` in
Wagtail.
To change the way your ``MyPageModel`` is displayed in the CreateView and the
EditView, simply define an ``edit_handler`` or ``panels`` attribute on your
model class.
.. code-block:: python
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',))
]
Or alternatively:
.. code-block:: python
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), ObjectList(...)])
.. _modeladmin_form_view_extra_css:
-----------------------------------
``ModelAdmin.form_view_extra_css``
-----------------------------------
**Expected value**: A list of path names of additional stylesheets to be added
to ``CreateView`` and ``EditView``
See the following part of the docs to find out more:
:ref:`modeladmin_adding_css_and_js`
.. _modeladmin_form_view_extra_js:
-----------------------------------
``ModelAdmin.form_view_extra_js``
-----------------------------------
**Expected value**: A list of path names of additional js files to be added
to ``CreateView`` and ``EditView``
See the following part of the docs to find out more:
:ref:`modeladmin_adding_css_and_js`
.. _modeladmin_create_template_name:
-----------------------------------
``ModelAdmin.create_template_name``
-----------------------------------
**Expected value**: The path to a custom template to use for ``CreateView``
See the following part of the docs to find out more:
:ref:`modeladmin_overriding_templates`
.. _modeladmin_create_view_class:
-----------------------------------
``ModelAdmin.create_view_class``
-----------------------------------
**Expected value**: A custom ``view`` class to replace
``modeladmin.views.CreateView``
See the following part of the docs to find out more:
:ref:`modeladmin_overriding_views`
.. _modeladmin_edit_template_name:
-----------------------------------
``ModelAdmin.edit_template_name``
-----------------------------------
**Expected value**: The path to a custom template to use for ``EditView``
See the following part of the docs to find out more:
:ref:`modeladmin_overriding_templates`
.. _modeladmin_edit_view_class:
-----------------------------------
``ModelAdmin.edit_view_class``
-----------------------------------
**Expected value**: A custom ``view`` class to replace
``modeladmin.views.EditView``
See the following part of the docs to find out more:
:ref:`modeladmin_overriding_views`
.. _modeladmin_delete_template_name:
-----------------------------------
``ModelAdmin.delete_template_name``
-----------------------------------
**Expected value**: The path to a custom template to use for ``DeleteView``
See the following part of the docs to find out more:
:ref:`modeladmin_overriding_templates`
.. _modeladmin_delete_view_class:
-----------------------------------
``ModelAdmin.delete_view_class``
-----------------------------------
**Expected value**: A custom ``view`` class to replace
``modeladmin.views.DeleteView``
See the following part of the docs to find out more:
:ref:`modeladmin_overriding_views`