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)
-
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', ) -
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'), ]
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')
)
Metadata
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)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| wagtail_taggable-0.0.10.tar.gz | 8.0 kB | Without provenance | Details for wagtail_taggable-0.0.10.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| wagtail_taggable-0.0.10-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details for wagtail_taggable-0.0.10-py2.py3-none-any.whl |
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
|
Security for wagtail-taggable 0.0.10
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.