Skip to main content

Wagtail Multiple Chooser Panel

An InlinePanel variant allowing multiple items to be quickly selected

License PyPI version Multiple Chooser Panel CI

About

This package provides an improved user interface for the common setup of a chooser widget inside an InlinePanel - for example, an image gallery consisting of a list of images chosen from the Wagtail image library. Normally, this would require adding a new child form for each item, opening the chooser modal and selecting an individual item each time. With the MultipleChooserPanel provided by this package, the "Add item" button now opens the chooser modal immediately, with the ability to select multiple items - all selected items are then added as child forms.

Example of MultipleChooserPanel in use on a blog page on the bakery demo site: the user clicks "Add author(s)", opening up a person chooser with checkboxes against each name. The user ticks the boxes for Muddy Waters and Olivia Ava, then clicks "Confirm selection" - this results in Muddy Waters and Olivia Ava being added as authors for the blog page.

In this version, only choosers implemented via wagtail-generic-chooser are supported; it is planned that this functionality will be incorporated into a future Wagtail release, with support for all of Wagtail's built-in choosers as well as custom choosers created through ChooserViewSet.

Supported versions

  • Python 3.7 - 3.11
  • Django 3.2 - 4.1
  • Wagtail 4.1

Installation

  • Ensure you have wagtail-generic-chooser version 0.5 or above installed
  • pip install wagtail-multiple-chooser-panel
  • Add "wagtail_multiple_chooser_panel" to INSTALLED_APPS

Usage

Beginning from an InlinePanel setup where the child model has a field with a chooser widget defined through wagtail-generic-chooser, such as:

class BlogPersonRelationship(Orderable, models.Model):
    page = ParentalKey(
        "BlogPage", related_name="blog_person_relationship", on_delete=models.CASCADE
    )
    person = models.ForeignKey(
        "base.Person", related_name="person_blog_relationship", on_delete=models.CASCADE
    )
    panels = [FieldPanel("person", widget=PersonChooser)]


class BlogPage(Page):
    content_panels = Page.content_panels + [
        # ...
        InlinePanel(
            "blog_person_relationship",
            label="Author(s)", min_num=1
        ),
    ]

Import MultipleChooserPanel from wagtail_multiple_chooser_panel.panels, replace InlinePanel with MultipleChooserPanel, and add a new chooser_field_name parameter that specifies the field of the child model that has the chooser widget:

from wagtail_multiple_chooser_panel.panels import MultipleChooserPanel

# BlogPersonRelationship definition remains unchanged

class BlogPage(Page):
    content_panels = Page.content_panels + [
        # ...
        MultipleChooserPanel(
            "blog_person_relationship",
            chooser_field_name="person",
            label="Author(s)", min_num=1
        ),
    ]

Release files for wagtail-multiple-chooser-panel 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wagtail-multiple-chooser-panel 0.1.0
File Size Uploaded
wagtail-multiple-chooser-panel-0.1.0.tar.gz 16.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wagtail-multiple-chooser-panel 0.1.0
File Interpreter ABI Platform
wagtail_multiple_chooser_panel-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 35.2 kB

Release files / wagtail-multiple-chooser-panel-0.1.0.tar.gz

Download URL wagtail-multiple-chooser-panel-0.1.0.tar.gz
Size 16.7 kB
Tags Source
SHA-256 checksum
How to use checksums
07212f02ad43f1d609b5d6257b1743ec805a62e0dc9336221ebf23dbccc7689d
BLAKE2b-256 checksum
How to use checksums
d5975dbf202f0d8e4b1a208f59dcf3a326ec60dc9a71b208b427391473c8586e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.0

Release files / wagtail_multiple_chooser_panel-0.1.0-py3-none-any.whl

Download URL wagtail_multiple_chooser_panel-0.1.0-py3-none-any.whl
Size 18.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0a145a9d6300bd80d872ccfe557defb86ec1b3e0f6695cdc480643ed4bc07dd6
BLAKE2b-256 checksum
How to use checksums
476b7353d58ff840c6744e5cff32780a59471d6435dc0e0fd7c6f2211c8a9f94
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.0

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page