diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 206d5ea402..e963f2e33c 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -4,6 +4,7 @@ Changelog 5.1 (xx.xx.xxxx) - IN DEVELOPMENT ~~~~~~~~~~~~~~~~ + * Docs: Document how to add non-ModelAdmin views to a `ModelAdminGroup` (Onno Timmerman) * Maintenance: Switch to ruff for flake8 / isort code checking (Oliver Parker) diff --git a/docs/reference/contrib/modeladmin/tips_and_tricks/index.md b/docs/reference/contrib/modeladmin/tips_and_tricks/index.md index 2b53f3d31c..539e9bd882 100644 --- a/docs/reference/contrib/modeladmin/tips_and_tricks/index.md +++ b/docs/reference/contrib/modeladmin/tips_and_tricks/index.md @@ -8,4 +8,5 @@ maxdepth: 1 --- custom_clean reversing_urls +modeladmingroup_extra_views ``` diff --git a/docs/reference/contrib/modeladmin/tips_and_tricks/modeladmingroup_extra_views.md b/docs/reference/contrib/modeladmin/tips_and_tricks/modeladmingroup_extra_views.md new file mode 100644 index 0000000000..4639c89ba3 --- /dev/null +++ b/docs/reference/contrib/modeladmin/tips_and_tricks/modeladmingroup_extra_views.md @@ -0,0 +1,37 @@ +# Adding non-ModelAdmin views to a `ModelAdminGroup` + +To add menu items to a `ModelAdminGroup` that are not managed by ModelAdmin, you can override the `get_submenu_items` method. For example, to add the calendar view described in [](../../../../extending/admin_views) alongside an `EventAdmin` modeladmin, you would do the following (in place of registering it through the `register_admin_menu_item` hook): + +```{code-block} python +from django.urls import reverse +from wagtail.contrib.modeladmin.options import ( + ModelAdmin, + modeladmin_register, + ModelAdminGroup, +) +from wagtail.admin.menu import MenuItem + + +class EventAdmin(ModelAdmin): + model = CalendarEvent + menu_label = "Events" + menu_icon = "date" + menu_order = 200 + list_display = ('title', 'date') + + +class CalendarGroup(ModelAdminGroup): + menu_label = "Calendar events" + menu_icon = "folder-open-inverse" + menu_order = 900 + items = (EventAdmin,) + + def get_submenu_items(self): + menu_items = super().get_submenu_items() + menu_items.append( + MenuItem('Calendar', reverse('calendar'), icon_name='date'), + ) + return menu_items + +modeladmin_register(CalendarGroup) +``` diff --git a/docs/releases/5.1.md b/docs/releases/5.1.md index fa33cd74e2..6d29d8cf7f 100644 --- a/docs/releases/5.1.md +++ b/docs/releases/5.1.md @@ -23,7 +23,7 @@ depth: 1 ### Documentation - * ... + * Document how to add non-ModelAdmin views to a `ModelAdminGroup` (Onno Timmerman) ### Maintenance