NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3309 most downloaded on PyPI
django-taggit is a reusable Django application for simple tagging.
Last release 2 years ago
no release in 18 months
Ships fairly regularly
a new release about every 6 months
Nearly every release is documented
notes for 56 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
17 years old
69 releases · first in 2010
Add a management command (remove_orphaned_tags) to remove orphaned tags
Add a management command (remove_orphaned_tags) to remove orphaned tags
Add a fallback for when multiple tags are found in case-insensitivity mode (the earliest by PK is returned)
Add a deduplicate_tags management command to remove duplicate tags based on case insensitivity. This feature is enabled when TAGGIT_CASE_INSENSITIVE is set to True in the settings.
We no longer package tests, docs, or the sample taggit app into the distributed wheels. While we believe this shouldn't affect anything for users of the library, please tell us if you find yourself hitting issues (like around import errors)
Fix missing template file for admin merge tag action
By default, order tag items on instances by the primary key. This generally means that they will be ordered by "creation date" for the tag item. The p
By default, order tag items on instances by the primary key. This generally means that they will be ordered by "creation date" for the tag item. The previous behavior for this was that by default tag items were not ordered. In practice tag items often end up ordered by creation date anyways, just due to how databases work, but this was not a guarantee. If you wish to have the old behavior, set ordering=[] to your TaggableManager instance. We believe that this should not cause a noticable performance change, and the number of queries involved should not change.
Added the ability to merge tags via the admin
Add Django 5.0 support (no code changes were needed, but now we test this release).
Add Python 3.12 support
Add support for dumpdata/loaddata using natural keys
One column per quarter.
Fix the package metadata to properly reflect the right Django and Python version requirements Release 5.0.0 improperly stated its Django bounds as >=3
Fix the package metadata to properly reflect the right Django and Python version requirements Release 5.0.0 improperly stated its Django bounds as >=3.2, so people installing without bounds will end up on a version that won't work.
Backwards incompatible: Remove the .index_together and .unique_together attributes on TaggedItem
Backwards icompatible: Rename the (content_type, object_id) index on TaggedItem. It is very unlikely for this to affect your code itself, and a migration will rename the index. This should not cause any downtime according to my research (Postgres does not lock the table for index renames, and Oracle holds a tiny lock to do it, and the change is only to the metadata, so is not dependent on table size).
Backwards incompatible: Remove the .index_together and .unique_together attributes on TaggedItem
We are instead using constraints and indexes to set up these properties.
Remove support for Django 3.2.
Remove usage of deprecated APIs for Django 4.2
Remove support for Python 3.7 (no code changes involved)
Fix tag_kwargs and TAGGIT_CASE_INSENSITIVE=True discrepency.
Remove Python 3.6 support (no code changes occurred, but we no longer test this release).
Remove Python 3.6 support (no code changes occurred, but we no longer test this release).
Remove Django 4.0 support (no code changes occurred, but we no longer test this release).
Add Django 4.2 support.
Add Python 3.11 support (no code changes were needed, but now we test this release).
Add Python 3.11 support (no code changes were needed, but now we test this release).
Add Django 4.1 support (no code changes were needed, but now we test this release).
Fixed an issue where object caches would not be properly cleared after updating tags, leading to stale reads in cases where prefetch_related is used.
Change TagListSerializerField to be a subclass of ListField. This should improve support for API document generation. This change should not affect API behavior, but might affect metaprogramming code, so please procede carefully during this update.
Backwards incompatible: Tag slugification used to silently strip non-ASCII characters from the tag name to make the slug. This leads to a lot of confu…
Backwards incompatible: Tag slugification used to silently strip non-ASCII characters from the tag name to make the slug. This leads to a lot of confusion for anyone using languages with non-latin alphabets, as well as weird performance issues.
Tag slugification will now, by default, maintain unicode characters as-is during slugification. This will lead to less surprises, but might cause issues for you if you are expecting all of your tag slugs to fit within a regex like [a-zA-Z0-9] (for example in URL routing configurations).
Generally speaking, this should not require action on your part as a library user, as existing tag slugs are persisted in the database, and only new tags will receive the enhanced unicode-compatible slug.
If you wish to maintain the old stripping behavior, set the setting TAGGIT_STRIP_UNICODE_WHEN_SLUGIFYING to True.
As a reminder, custom tag models can easily customize slugification behavior by overriding the slugify method to your business needs.
`` Drop Django 2.2 support.
* Add Python 3.10 support. * Add Django 4.0 support. * Drop Django 3.1 support.
Add Python 3.10 support.
Add Django 4.0 support.
Drop Django 3.1 support.
Without it DRF raises error (since 3.3.0)
Without it DRF raises error (since 3.3.0)
Backwards incompatible: TaggableManager.set now takes a list of tags (instead of varargs) so that its API matches Django's RelatedManager.set. Example:
previously: item.tags.set("red", "blue")
now: item.tags.set(["red", "blue"])
Fix issue where TagField would incorrectly report that a field has changed on empty values.
Update Russian translation.
Add Persian translation
Fix issue for many languages where content types were not being properly translated.
Provide translators additional context regarding strings in TagBase model.
Fix compiled Ukranian translation (which would cause a failure on load for this locale).
Fix compiled Ukranian translation (which would cause a failure on load for this locale).
Update compiled Danish translation.
Vendor in the django-taggit-serializer project (under taggit.serializers).
Vendor in the django-taggit-serializer project (under taggit.serializers).
Add Arabic translation.
Add Ukranian translation.
Remove Django 1.11 and 3.0 support.
Add Python 3.9 support.
Remove Python 3.5 support.
Add Django 3.2 support.
Remove Django 1.11 and 3.0 support.
Add Danish translation.
Fix crashing that could occur with similar_objects in multi-inheritance contexts.
Add support for custom fields on through table models with through_defaults for TaggedManager.add and TaggedManager.set.
Model and field verbose_name and verbose_name_plural attributes are now lowercase. This simplifies using the name in the middle of a sentence. When us
Model and field verbose_name and verbose_name_plural attributes are now lowercase. This simplifies using the name in the middle of a sentence. When used as a header, title, or at the beginning of a sentence, a text transformed can be used to adjust the case.
Fix prefetch_related when using UUIDTaggedItem.
Allow for passing in extra constructor parameters when using TaggableManager.add. This is especially useful when using custom tag models.
Removed support for end-of-life Django 2.0 and 2.1.
Removed support for end-of-life Django 2.0 and 2.1.
Added support for Django 3.0.
Added support for Python 3.8.
Moved TaggedItemBase.tags_for() to ItemBase.
Replaced reference to removed Django's .virtual_fields with .private_field.
Added TextareaTagWidget.
Fix form.changed_data to allow early access for a tags defined with blank=True.
Added Finnish translation.
Updated Chinese translation.
Updated Esperanto translation.
Fix form.changed_data to allow early access for a tags defined with blank=True.
Backwards incompatible: Remove support for Python 2.
Backwards incompatible: Remove support for Python 2.
Added has_changed() method to taggit.forms.TagField.
Added multi-column unique constraint to model TaggedItem on fields content_type, object_id, and tag. Databases that contain duplicates will need to add a data migration to resolve these duplicates.
Fixed TaggableManager.most_common() to always evaluate lazily. Allows placing a .most_common() query at the top level of a module.
Fixed setting the related_name on a tags manager that exists on a model named Name.
The project has moved to Jazzband _. This is the first release under the new organization. The new repository URL is _.
The project has moved to Jazzband. This is the first release under the new organization. The new repository URL is https://github.com/jazzband/django-taggit.
Added support for Django 2.2.
Fixed a race condition in TaggableManager.
Removed method ItemBase.bulk_lookup_kwargs().
Fixed view tagged_object_list to set queryset.model as ListView.model (was previously set as a ContentType instance).
_TaggableManager and TaggableManager now always call the parent class __init__.
Removed TaggableRel and replaced uses with ManyToManyRel.
Backwards incompatible: Remove support for Django < 1.11
Backwards incompatible: Remove support for Django < 1.11
Added support for Django 2.1 and Python 3.7
Moved TagWidget value conversion from TagWidget.render() to TagWidget.format_value()
Backwards incompatible: Dropped support for EOL Python 3.3
Added support for Django 2.0
Backwards incompatible: Dropped support for EOL Python 3.3
Add testing for Django 1.11 and Python 3.6
Update spanish translation
Add testing for Django 1.11 and Python 3.6
introduce isort and flake8 in the CI
[docs] Fixed links to external apps
Improved auto-slug in TagBase to support UUID pk
[docs] Added contribution guidelines
Backwards incompatible: Drop support for Django 1.7
Backwards incompatible: Drop support for Django 1.7
Fix case-insensitive tag creation when setting to a mix of new and existing tags are used
Fix case-insensitive tag creation when setting to a mix of new and existing tags are used
Check for case-insensitive duplicates when creating new tags
Check for case-insensitive duplicates when creating new tags
Support __gt__ and __lt__ ordering on Tags
Support __gt__ and __lt__ ordering on Tags
* Fix list view
Fix list view
Update Python version classifiers in setup.py
Update Python version classifiers in setup.py
Add Greek translation
Document supported versions of Django; fix Travis to test these versions.
Document supported versions of Django; fix Travis to test these versions.
Address list_display and fieldsets in admin docs
Fix form tests on Django 1.10
Address list_display and fieldsets in admin docs
external_apps.txt improvements
Remove support for Django 1.4-1.6, again.
Add extra_filters argument to the manager's most_common method
Add extra_filters argument to the manager's most_common method
Specify app_label for Tag and TaggedItem
Specify app_label for Tag and TaggedItem
Fix UnboundLocalError in _TaggableManager.set(..)
Fix UnboundLocalError in _TaggableManager.set(..)
Update doc links to reflect RTD domain changes
Improve Russian translations
Add app config, add simplified Chinese translation file
Add app config, add simplified Chinese translation file
Implementation of m2m_changed signal sending
Implementation of m2m_changed signal sending
Code and tooling improvements
Added Spanish and Turkish translations
Added Spanish and Turkish translations
Add the min_count parameter to managers.most_common function
Add the min_count parameter to managers.most_common function
* Address deprecation warnings
Address deprecation warnings
Add option to override default tag string parsing
Add option to override default tag string parsing
Drop support for Python 2.6
* Silence Django 1.9 warning
Silence Django 1.9 warning
* Django 1.9 compatibility fix
Django 1.9 compatibility fix
Allows custom Through Model with GenericForeignKey
Allows custom Through Model with GenericForeignKey
Silence Django 1.9 warning about on_delete
Silence Django 1.9 warning about on_delete
* Django 1.9 beta compatibility
Django 1.9 beta compatibility
Fix unknown column object_id issue with Django 1.6+
Fix unknown column object_id issue with Django 1.6+
Database index added on TaggedItem fields content_type & object_id
Database index added on TaggedItem fields content_type & object_id
Access default manager via class instead of instance
Access default manager via class instead of instance
Prevent IntegrityError with custom TagBase classes
Prevent IntegrityError with custom TagBase classes
Fix an admin bug related to the Manager property through_fields
Fix an admin bug related to the Manager property through_fields
Fix bug that assumed all primary keys are named 'id'
Fix bug that assumed all primary keys are named 'id'
Add option to allow case-insensitive tags
Add option to allow case-insensitive tags
Fix wrong slugs for non-latin chars. Only works if optional GPL dependency (unidecode) is installed.
Fix wrong slugs for non-latin chars. Only works if optional GPL dependency (unidecode) is installed.
Prevent extra JOIN when prefetching
Prevent extra JOIN when prefetching
Prevent _meta warnings with Django 1.8
* Django 1.8 support
Django 1.8 support
Specify that the internal type of the TaggitManager is a ManyToManyField
Specify that the internal type of the TaggitManager is a ManyToManyField
* Fixed 1.7 migrations.
Fixed 1.7 migrations.
Final (hopefully) fixes for the upcoming Django 1.7 release.
Final (hopefully) fixes for the upcoming Django 1.7 release.
Added Japanese translation.
Nothing published for this version
Forbid multiple TaggableManagers via generic foreign keys.
Forbid multiple TaggableManagers via generic foreign keys.
Fixed support for Django 1.4 and 1.5.
Fixed support for Django 1.4 and 1.5.
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →