Wagtail CopyableModelAdmin
CopyableModelAdmin is an extension of the Wagtail ModelAdmin that allows for model instances to be copied in the user interface with a "Copy" button.
Dependencies
- Python 3.6+
- Django 1.11+, 2.0+
- Wagtail 1.13+, 2.0+
Installation
- Install wagtail-copyablemodeladmin:
pip install wagtail-copyablemodeladmin
- Add
copyablemodeladmin
as an installed app in your Djangosettings.py
:
INSTALLED_APPS = (
...
'copyablemodeladmin',
...
)
Usage
Please see the Wagtail ModelAdmin documentation for getting started with ModelAdmin.
When creating a ModelAdmin
for objects that should be copyable, instead of inheriting from ModelAdmin
, inherit from copyablemodeladmin.options.CopyableModelAdmin
:
from wagtail.contrib.modeladmin.options import modeladmin_register
from copyablemodeladmin.options import CopyableModelAdmin
from myapp.models import Book
# Inherit from CopyableModelAdmin instead of ModelAdmin
class BookAdmin(CopyableModelAdmin):
model = Book
list_display = ('title', 'author')
list_filter = ('author',)
search_fields = ('title', 'author')
# Now you just need to register your customised ModelAdmin class with Wagtail
modeladmin_register(BookAdmin)
In addition to CopyableModelAdmin
, there are three mixin classes that can be added to other custom ModelAdmin
subclasses:
from copyablemodeladmin.helpers import CopyButtonHelperMixin
from copyablemodeladmin.options import CopyableModelAdminMixin
from copyablemodeladmin.views import CopyViewMixin
class CustomCopyButtonHelper(CopyButtonHelperMixin, CustomButtonHelper):
pass
class CustomCopyInstanceView(CopyViewMixin, CustomInstanceSpecificView):
pass
class CustomCopyableModelAdmin(CopyableModelAdminMixin, ModelAdmin):
button_helper_class = CustomCopyButtonHelper
copy_view_class = CustomCopyInstanceView
Getting help
Please add issues to the issue tracker.
Getting involved
General instructions on how to contribute can be found in CONTRIBUTING.
Licensing
Credits and references
- Forked from cfgov-refresh