Skip to main content

Generic tagging application for Django

Project description

Django Tagging

Build Status - develop branch Coverage of the code

This is a generic tagging application for Django projects

Note that this application version requires Python 3.5 or later, and Django 1.11 or later. You can obtain Python from and Django from

Django Tagging Changelog

Version 0.5.0, 6th March 2020:

  • Drop support for Python 2.

  • Compatiblity fix for Django 2.2 and Django 3.0.

Version 0.4.6, 14th October 2017:

  • Fix IntegrityError while saving inconsistent tags

  • Update tag name length to use MAX_TAG_LENGTH setting

Version 0.4.5, 6th September 2016:

  • Fix on the previous compatiblity fix.

Version 0.4.4, 5th September 2016:

  • Compatiblity fix for Django 1.10

Version 0.4.3, 3rd May 2016:

  • Add missing migration for on_delete

Version 0.4.2, 2nd May 2016:

  • Fix tag weight

  • Reduce warnings for recent versions of Django

Version 0.4.1, 15th January 2016:

  • Typo fixes

  • Support apps

Version 0.4, 15th June 2015:

  • Modernization of the package

Version 0.3.6, 13th May 2015:

  • Corrected initial migration

Version 0.3.5, 13th May 2015:

  • Added support for Django 1.8

  • Using migrations to fix syncdb

  • Rename get_query_set to get_queryset

  • Import GenericForeignKey from the new location

Version 0.3.4, 7th November 2014:

  • Fix unicode errors in admin

Version 0.3.3, 15th October 2014:

  • Added support for Django 1.7

Version 0.3.2, 18th February 2014:

  • Added support for Django 1.4 and 1.5

  • Added support for Python 2.6 to 3.3

  • Added tox to test and coverage

Version 0.3.1, 22nd January 2010:

  • Fixed Django 1.2 support (did not add anything new)

  • Fixed #95 - tagging.register won’t stomp on model attributes

Version 0.3.0, 22nd August 2009:

  • Fixes for Django 1.0 compatibility.

  • Added a tagging.generic module for working with list of objects which have generic relations, containing a fetch_content_objects function for retrieving content objects for a list of TaggedItem``s using ``number_of_content_types + 1 queries rather than the number_of_tagged_items * 2 queries you’d get by iterating over the list and accessing each item’s object attribute.

  • Added a usage method to ModelTagManager.

  • TaggedItemManager’s methods now accept a QuerySet or a Model class. If a QuerySet is given, it will be used as the basis for the QuerySet``s the methods return, so can be used to restrict results to a subset of a model's instances. The `tagged_object_list generic view and ModelTaggedItemManager`` manager have been updated accordingly.

  • Removed tagging\tests\, as tests can be run with test --settings=tagging.tests.settings.

  • A tagging.TagDescriptor is now added to models when registered. This returns a tagging.managers.ModelTagManager when accessed on a model class, and provide access to and control over tags when used on an instance.

  • Added tagging.register to register models with the tagging app. Initially, a tagging.managers.ModelTaggedItemManager is added for convenient access to tagged items.

  • Moved TagManager and TaggedItemManager to - gets rid of some import related silliness, as TagManager needs access to TaggedItem.

Version 0.2.1, 16th Jan 2008:

  • Fixed a bug with space-delimited tag input handling - duplicates weren’t being removed and the list of tag names wasn’t sorted.

Version 0.2, 12th Jan 2008:

Packaged from revision 122 in Subversion; download at

  • Added a tag_cloud_for_model template tag.

  • Added a MAX_TAG_LENGTH setting.

  • Multi-word tags are here - simple space-delimited input still works. Double quotes and/or commas are used to delineate multi- word tags. As far as valid tag contents - anything goes, at least initially.

  • BACKWARDS-INCOMPATIBLE CHANGE - django.utils.get_tag_name_list and related regular expressions have been removed in favour of a new tag input parsing function, django.utils.parse_tag_input.

  • BACKWARDS-INCOMPATIBLE CHANGE - Tag and TaggedItem no longer declare an explicit db_table. If you can’t rename your tables, you’ll have to put these back in manually.

  • Fixed a bug in calculation of logarithmic tag clouds - font_size attributes were not being set in some cases when the least used tag in the cloud had been used more than once.

  • For consistency of return type, TaggedItemManager.get_by_model now returns an empty QuerySet instead of an empty list if non-existent tags were given.

  • Fixed a bug caused by cloud_for_model not passing its distribution argument to calculate_cloud.

  • Added TaggedItemManager.get_union_by_model for looking up items tagged with any one of a list of tags.

  • Added TagManager.add_tag for adding a single extra tag to an object.

  • Tag names can now be forced to lowercase before they are saved to the database by adding the appropriate FORCE_LOWERCASE_TAGS setting to your project’s settings module. This feature defaults to being off.

  • Fixed a bug where passing non-existent tag names to TaggedItemManager.get_by_model caused database errors with some backends.

  • Added tagged_object_list generic view for displaying paginated lists of objects for a given model which have a given tag, and optionally related tags for that model.

Version 0.1, 30th May 2007:

Packaged from revision 79 in Subversion; download at

  • First packaged version using distutils.

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

django-tagging-0.5.0.tar.gz (42.8 kB view hashes)

Uploaded source

Built Distribution

django_tagging-0.5.0-py3-none-any.whl (33.8 kB view hashes)

Uploaded py3

Supported by

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