Skip to main content

Allows using StructBlock, ListBlock, and MultipleChoiceBlock as model fields

Project description

wagtail-block-fields

Use Wagtail's StructBlock, ListBlock, and MultipleChoiceBlock as standalone model fields.

Just like StreamField wraps StreamBlock, this package provides:

  • StructField - wraps a StructBlock
  • ListField - wraps a ListBlock
  • MultipleChoiceField - wraps a MultipleChoiceBlock

Installation

pip install wagtail-block-fields

Usage

StructField

from wagtail.blocks import CharBlock, StructBlock
from wagtail_block_fields import StructField

class AddressBlock(StructBlock):
    street = CharBlock()
    city = CharBlock()
    postal_code = CharBlock()

class MyPage(Page):
    address = StructField(AddressBlock())
    
    contact = StructField([
        ('email', CharBlock()),
        ('phone', CharBlock()),
    ])

ListField

from wagtail.blocks import CharBlock
from wagtail_block_fields import ListField

class MyPage(Page):
    tags = ListField(CharBlock())
    categories = ListField(CharBlock(), min_num=1, max_num=5)
    addresses = ListField(AddressBlock())

MultipleChoiceField

from wagtail_block_fields import MultipleChoiceField

COLOR_CHOICES = [
    ("red", "Red"),
    ("green", "Green"),
    ("blue", "Blue"),
]

class MyPage(Page):
    colors = MultipleChoiceField(choices=COLOR_CHOICES)

In templates

<p>{{ page.address.street }}, {{ page.address.city }}</p>

<ul>
{% for tag in page.tags %}
    <li>{{ tag }}</li>
{% endfor %}
</ul>

<ul>
{% for color in page.colors %}
    <li>{{ color }}</li>
{% endfor %}
</ul>

{% for address in page.addresses %}
    <p>{{ address.street }}, {{ address.city }}</p>
{% endfor %}

Why?

Sometimes you need structured JSON data in a single field without the complexity of StreamField. These fields:

  • Store data as JSON in a single database column
  • Provide full Wagtail admin editing UI
  • Support validation, search indexing, and reference extraction
  • Work with migrations just like StreamField
  • Support nesting (e.g., MultipleChoiceField inside a StructField)

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wagtail_block_fields-0.3.0.tar.gz (47.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wagtail_block_fields-0.3.0-py3-none-any.whl (5.3 kB view details)

Uploaded Python 3

File details

Details for the file wagtail_block_fields-0.3.0.tar.gz.

File metadata

  • Download URL: wagtail_block_fields-0.3.0.tar.gz
  • Upload date:
  • Size: 47.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for wagtail_block_fields-0.3.0.tar.gz
Algorithm Hash digest
SHA256 5473966ddd29b7b8e2e2ce2996634e10e31ce1835ea251e334871c8ec28d308f
MD5 35ebe3d4b0ccbd1d6adcc5366b047e02
BLAKE2b-256 b5067d2e93747956c00bd086b4c72badc4ec8b5c8cfe95f3d5d1f8b6b8dbbfde

See more details on using hashes here.

Provenance

The following attestation bundles were made for wagtail_block_fields-0.3.0.tar.gz:

Publisher: publish.yml on joeyjurjens/wagtail-block-fields

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wagtail_block_fields-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for wagtail_block_fields-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5000bde00539aec35ae312170fca1bc395e25c347450fbbc3856095463d200f9
MD5 f654c31c3faf10c39284b862eeb0cd0c
BLAKE2b-256 c56c3313e27462231530d66ce6e2521bdbdbc6042c0fd94c60db3af54467a678

See more details on using hashes here.

Provenance

The following attestation bundles were made for wagtail_block_fields-0.3.0-py3-none-any.whl:

Publisher: publish.yml on joeyjurjens/wagtail-block-fields

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page