Skip to main content

Wagtail Taggable

Simple tag functionality for Wagtail sites wanting curated tags without the complexity.

Change Log

  • v0.0.10:
    • Updated InlinePanel invocation to match requirements for Wagtail 4.2 and therefore pin Wagtail 4.2 as the minimum supported version.

Installation & Setup

Install with pip

pip install wagtail-taggable

or

poetry add wagtail-taggable

Add to Django installed apps

INSTALLED_APPS = [
    #...
    'wagtail_taggable',
]

Setup your tag models

Using the register_tag decorator automatically sets up any ForeignKey references to the decorated model to render using a chooser widget specifically for your tag model. It takes care of registering all the form widgets and urls needed to get this interface working.

@register_tag('Example')
class ExampleTag(BaseTag):

    class Meta:
        verbose_name = _('Example')

Optionally expose Tag models using Model Admin

from django.apps import apps
from wagtail.contrib.modeladmin.options import ModelAdmin, ModelAdminGroup

class ExampleTagModelAdmin(ModelAdmin):

    @property
    def model(self):
        return apps.get_model('app.ExampleTag')

    menu_label = 'Example'
    menu_icon = 'tasks'
    menu_order = 100
    list_display = ('name',)


class TagsModelAdminGroup(ModelAdminGroup):

    menu_label = 'Tags'
    menu_icon = 'tag'
    menu_order = 502
    items = [
        ExampleTagModelAdmin,
    ]

from app.admin.tags import TagsModelAdminGroup

modeladmin_register(TagsModelAdminGroup)

Use tags on page models (or any other model)

  1. Define through relationship:

     class ExamplePageExampleTagRelationship(models.Model):
    
         page = ParentalKey(
             'app.ExamplePage',
             on_delete=models.CASCADE,
             related_name='example_tag_relationships',
             related_query_name='example_tag_relationship',
         )
    
         example_tag = models.ForeignKey(
             'app.ExampleTag',
             on_delete=models.CASCADE,
             related_name='example_page_relationships',
             related_query_name='example_page_relationship',
         )
    
  2. Use TagsPanel to render the tags interface in the CMS for the taggable model (in this case a wagtail.Page)

     class ExamplePage(Page):
    
         ...
    
         content_panels = [
             TagsPanel('example_tag_relationships', heading='Example Tags'),
         ]
    

Screenshot

Query items based on tags

Perform queries based on tags like you would with any other related table

tagged_items = (
    ExamplePage.objects
    .filter(example_tag_relationship__example_tag__name='My Cool Tag')
)

Release files for wagtail-taggable 0.0.10

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-taggable 0.0.10
File Size Uploaded
wagtail_taggable-0.0.10.tar.gz 8.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wagtail-taggable 0.0.10
File Interpreter ABI Platform
wagtail_taggable-0.0.10-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 16.6 kB

Release files / wagtail_taggable-0.0.10.tar.gz

Download URL wagtail_taggable-0.0.10.tar.gz
Size 8.0 kB
Tags Source
SHA-256 checksum
How to use checksums
0745accca9d2dca9b599e6c6208785ed60e9a227e2a786595b2f948d66425235
BLAKE2b-256 checksum
How to use checksums
64da93a9b6b24689cab6489d2251f00b29d6b66d6178b086c5153ab9de2c431b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.6

Release files / wagtail_taggable-0.0.10-py2.py3-none-any.whl

Download URL wagtail_taggable-0.0.10-py2.py3-none-any.whl
Size 8.6 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
ed84610a1a1abe148759ba2945230375435e0147a21135215aab178c6ad118b6
BLAKE2b-256 checksum
How to use checksums
cd293945d1a3408544f32d3b7a2cb97a95d23f023c002fa8ccc700fcdaec8b0c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.6

Release history Release notifications | RSS feed

This release

0.0.10 This release

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

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