Django Tag Me

Simple, flexible tagging for Django.
Add tags to any Django model field -- with a polished widget, per-user tag customization, and automatic resilience to model renames.
Features
- Easy setup -- Add
TagMeCharFieldto your model and go - Beautiful widget -- Searchable dropdown with tag pills, powered by Alpine.js
- User tags -- Each user gets their own customizable tag set per field
- System tags -- Define default tags available to all users
- Tag synchronization -- Keep tags in sync across related models
- Model rename resilient -- FK-based lookups with automatic orphan detection and repair
- CLI diagnostics -- Health checks, orphan repair, and built-in troubleshooting via
tag_mecommand - Structured logging -- Observability via structlog for production monitoring
- Form integration -- Drop-in mixin for your model forms
- Template tags -- Display tags as styled pills
Quick Example
# models.py
from tag_me.models import TagMeCharField
class Article(models.Model):
tags = TagMeCharField(blank=True)
category = TagMeCharField(choices=CategoryChoices.choices, system_tag=True)
# forms.py
from tag_me.forms import TagMeModelFormMixin
class ArticleForm(TagMeModelFormMixin, forms.ModelForm):
class Meta:
model = Article
fields = ["tags", "category"]
See the Quickstart for the full setup including templates and frontend requirements.
Widget Preview
Dropdown with tag options
Search and filter tags
Model Rename Resilience
Rename your Django models without breaking tags. Tag-me uses ContentType foreign keys instead of model name strings, and automatically detects and merges orphaned records during migration.
# Rename your model, then:
python manage.py makemigrations # answer "yes" to rename prompt
python manage.py migrate # tag-me handles the rest
# Verify everything is clean:
python manage.py tag_me check
See How to Upgrade to FK Lookup for details on the FK-based system.
Management Command
Tag-me includes a CLI for diagnostics and administration:
python manage.py tag_me populate # create/update tags
python manage.py tag_me check # data integrity audit
python manage.py tag_me fix-orphans --dry-run # preview orphan repair
python manage.py tag_me help # built-in documentation
Tag population runs automatically after every migrate. The CLI exists for diagnostics, manual repair, and single-user operations.
See How to Use the Tag-me CLI for the full guide.
Installation
pip install django-tag-me
See the documentation for setup and usage instructions.
Links
Credits
- Dropdown interface adapted from alpinejs-multiselect
- Built with Django Cookiecutter
Metadata
Release files for django-tag-me 2026.10.20.4
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 |
|---|---|---|---|---|
| django_tag_me-2026.10.20.4.tar.gz | 220.5 kB | Without provenance | Details for django_tag_me-2026.10.20.4.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| django_tag_me-2026.10.20.4-py3-none-any.whl | Python 3 | none | any | Details for django_tag_me-2026.10.20.4-py3-none-any.whl |
Total release size: 334.8 kB
Release files / django_tag_me-2026.10.20.4.tar.gz
| Download URL | django_tag_me-2026.10.20.4.tar.gz |
|---|---|
| Size | 220.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9d9caa771ec909ba06eb347a5e7cfbc75ad622b94e433fa4a97cbbe6a83ceb6f
|
|
BLAKE2b-256 checksum How to use checksums |
7124622c3ca29cd4cbfc1c41d1733de13afc9c9028db620eaf6baa45fc4331b6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / django_tag_me-2026.10.20.4-py3-none-any.whl
| Download URL | django_tag_me-2026.10.20.4-py3-none-any.whl |
|---|---|
| Size | 114.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
330850763c27e74c3fbd11143ed050101eb2eb4f4582e30e97bbd38bb02fdabf
|
|
BLAKE2b-256 checksum How to use checksums |
68a9cc067ce9217ff53ff596ff889f885fcb8c5896bbbfc22be7f40e442de3c7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Security for django-tag-me 2026.10.20.4
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.