Changelog
=========

1.0.0 (2019-03-17)
~~~~~~~~~~~~~~~~~~
 * **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``.

0.24.0 (2019-02-19)
~~~~~~~~~~~~~~~~~~~
 * The project has moved to `Jazzband <https://jazzband.co/>`_. 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``.

0.23.0 (2018-08-07)
~~~~~~~~~~~~~~~~~~~
 * **Backwards incompatible:** Remove support for Django < 1.11
  * https://github.com/jazzband/django-taggit/pull/518
 * Added support for Django 2.1 and Python 3.7
  * https://github.com/jazzband/django-taggit/pull/536
 * Moved TagWidget value conversion from TagWidget.render() to TagWidget.format_value()
  * https://github.com/jazzband/django-taggit/pull/534

0.22.2 (2017-12-27)
~~~~~~~~~~~~~~~~~~~
 * Added support for Django 2.0
  * https://github.com/jazzband/django-taggit/pull/509
 * **Backwards incompatible:** Dropped support for EOL Python 3.3
  * https://github.com/jazzband/django-taggit/pull/512

0.22.1 (2017-04-22)
~~~~~~~~~~~~~~~~~~~
 * Update spanish translation
  * https://github.com/jazzband/django-taggit/pull/473
 * Add testing for Django 1.11 and Python 3.6
  * https://github.com/jazzband/django-taggit/pull/475
 * introduce isort and flake8 in the CI
  * https://github.com/jazzband/django-taggit/pull/476
 * [docs] Fixed links to external apps
  * https://github.com/jazzband/django-taggit/pull/481
 * Improved auto-slug in TagBase to support UUID pk
  * https://github.com/jazzband/django-taggit/pull/482
 * [docs] Added contribution guidelines
  * https://github.com/jazzband/django-taggit/pull/480

0.22.0 (2017-01-29)
~~~~~~~~~~~~~~~~~~~
 * **Backwards incompatible:** Drop support for Django 1.7
  * https://github.com/jazzband/django-taggit/pull/465

0.21.6 (2017-01-25)
~~~~~~~~~~~~~~~~~~~
 * Fix case-insensitive tag creation when setting to a mix of new and existing tags are used
  * https://github.com/jazzband/django-taggit/pull/464

0.21.5 (2017-01-21)
~~~~~~~~~~~~~~~~~~~
 * Check for case-insensitive duplicates when creating new tags
  * https://github.com/jazzband/django-taggit/pull/461

0.21.4 (2017-01-10)
~~~~~~~~~~~~~~~~~~~
 * Support __gt__ and __lt__ ordering on Tags
  * https://github.com/jazzband/django-taggit/pull/456

0.21.3 (2016-10-07)
~~~~~~~~~~~~~~~~~~~
 * Fix list view
  * https://github.com/jazzband/django-taggit/pull/444

0.21.2 (2016-08-31)
~~~~~~~~~~~~~~~~~~~
 * Update Python version classifiers in setup.py
  * https://github.com/jazzband/django-taggit/pull/438
 * Add Greek translation
  * https://github.com/jazzband/django-taggit/pull/439

0.21.1 (2016-08-25)
~~~~~~~~~~~~~~~~~~~
 * Document supported versions of Django; fix Travis to test these versions.
  * https://github.com/jazzband/django-taggit/pull/435

0.21.0 (2016-08-22)
~~~~~~~~~~~~~~~~~~~
 * Fix form tests on Django 1.10
  * https://github.com/jazzband/django-taggit/pull/433
 * Address list_display and fieldsets in admin docs
  * https://github.com/jazzband/django-taggit/pull/429
 * external_apps.txt improvements
  * https://github.com/jazzband/django-taggit/pull/428
 * Remove support for Django 1.4-1.6, again.
  * https://github.com/jazzband/django-taggit/pull/427

0.20.2 (2016-07-11)
~~~~~~~~~~~~~~~~~~~
 * Add extra_filters argument to the manager's most_common method
  * https://github.com/jazzband/django-taggit/pull/422

0.20.1 (2016-06-23)
~~~~~~~~~~~~~~~~~~~
 * Specify `app_label` for `Tag` and `TaggedItem`
  * https://github.com/jazzband/django-taggit/pull/420

0.20.0 (2016-06-19)
~~~~~~~~~~~~~~~~~~~
 * Fix UnboundLocalError in _TaggableManager.set(..)
  * https://github.com/jazzband/django-taggit/pull/418
 * Update doc links to reflect RTD domain changes
  * https://github.com/jazzband/django-taggit/pull/417
 * Improve Russian translations
  * https://github.com/jazzband/django-taggit/pull/416

0.19.1 (2016-05-25)
~~~~~~~~~~~~~~~~~~~
 * Add app config, add simplified Chinese translation file
  * https://github.com/jazzband/django-taggit/pull/410

0.19.0 (2016-05-23)
~~~~~~~~~~~~~~~~~~~
 * Implementation of m2m_changed signal sending
  * https://github.com/jazzband/django-taggit/pull/409
 * Code and tooling improvements
  * https://github.com/jazzband/django-taggit/pull/408

0.18.3 (2016-05-12)
~~~~~~~~~~~~~~~~~~~
 * Added Spanish and Turkish translations
  * https://github.com/jazzband/django-taggit/pull/402

0.18.2 (2016-05-08)
~~~~~~~~~~~~~~~~~~~
 * Add the min_count parameter to managers.most_common function
  * https://github.com/jazzband/django-taggit/pull/400

0.18.1 (2016-03-30)
~~~~~~~~~~~~~~~~~~~
 * Address deprecation warnings
  * https://github.com/jazzband/django-taggit/pull/385

0.18.0 (2016-01-18)
~~~~~~~~~~~~~~~~~~~
 * Add option to override default tag string parsing
  * https://github.com/jazzband/django-taggit/pull/232
 * Drop support for Python 2.6
  * https://github.com/jazzband/django-taggit/pull/373

0.17.6 (2015-12-09)
~~~~~~~~~~~~~~~~~~~
 * Silence Django 1.9 warning
  * https://github.com/jazzband/django-taggit/pull/366

0.17.5 (2015-11-27)
~~~~~~~~~~~~~~~~~~~
 * Django 1.9 compatibility fix
  * https://github.com/jazzband/django-taggit/pull/364

0.17.4 (2015-11-25)
~~~~~~~~~~~~~~~~~~~
 * Allows custom Through Model with GenericForeignKey
  * https://github.com/jazzband/django-taggit/pull/359

0.17.3 (2015-10-26)
~~~~~~~~~~~~~~~~~~~
 * Silence Django 1.9 warning about on_delete
  * https://github.com/jazzband/django-taggit/pull/338

0.17.2 (2015-10-25)
~~~~~~~~~~~~~~~~~~~
 * Django 1.9 beta compatibility
  * https://github.com/jazzband/django-taggit/pull/352

0.17.1 (2015-09-10)
~~~~~~~~~~~~~~~~~~~
 * Fix unknown column `object_id` issue with Django 1.6+
  * https://github.com/jazzband/django-taggit/pull/305

0.17.0 (2015-08-14)
~~~~~~~~~~~~~~~~~~~
 * Database index added on TaggedItem fields content_type & object_id
  * https://github.com/jazzband/django-taggit/pull/319

0.16.4 (2015-08-13)
~~~~~~~~~~~~~~~~~~~
 * Access default manager via class instead of instance
  * https://github.com/jazzband/django-taggit/pull/335

0.16.3 (2015-08-08)
~~~~~~~~~~~~~~~~~~~
 * Prevent IntegrityError with custom TagBase classes
  * https://github.com/jazzband/django-taggit/pull/334

0.16.2 (2015-07-13)
~~~~~~~~~~~~~~~~~~~
 * Fix an admin bug related to the `Manager` property `through_fields`
  * https://github.com/jazzband/django-taggit/pull/328

0.16.1 (2015-07-09)
~~~~~~~~~~~~~~~~~~~
 * Fix bug that assumed all primary keys are named 'id'
  * https://github.com/jazzband/django-taggit/pull/322

0.16.0 (2015-07-04)
~~~~~~~~~~~~~~~~~~~
 * Add option to allow case-insensitive tags
  * https://github.com/jazzband/django-taggit/pull/325

0.15.0 (2015-06-23)
~~~~~~~~~~~~~~~~~~~
 * Fix wrong slugs for non-latin chars
  * Only works if optional GPL dependency (unidecode) is installed
  * https://github.com/jazzband/django-taggit/pull/315
  * https://github.com/jazzband/django-taggit/pull/273

0.14.0 (2015-04-26)
~~~~~~~~~~~~~~~~~~~
 * Prevent extra JOIN when prefetching
  * https://github.com/jazzband/django-taggit/pull/275
 * Prevent _meta warnings with Django 1.8
  * https://github.com/jazzband/django-taggit/pull/299

0.13.0 (2015-04-02)
~~~~~~~~~~~~~~~~~~~
 * Django 1.8 support
  * https://github.com/jazzband/django-taggit/pull/297

0.12.3 (2015-03-03)
~~~~~~~~~~~~~~~~~~~
 * Specify that the internal type of the TaggitManager is a ManyToManyField

0.12.2 (2014-21-09)
~~~~~~~~~~~~~~~~~~~
 * Fixed 1.7 migrations.

0.12.1 (2014-10-08)
~~~~~~~~~~~~~~~~~~~
 * Final (hopefully) fixes for the upcoming Django 1.7 release.
 * Added Japanese translation.

0.12.0 (2014-20-04)
~~~~~~~~~~~~~~~~~~~
 * **Backwards incompatible:** Support for Django 1.7 migrations. South users
   have to set ``SOUTH_MIGRATION_MODULES`` to use ``taggit.south_migrations``
   for taggit.
 * **Backwards incompatible:** Django's new transaction handling is used on
   Django 1.6 and newer.
 * **Backwards incompatible:** ``Tag.save`` got changed to opportunistically
   try to save the tag and if that fails fall back to selecting existing
   similar tags and retry -- if that fails too an ``IntegrityError`` is
   raised by the database, your app will have to handle that.
 * Added Italian and Esperanto translations.

0.11.2 (2013-13-12)
~~~~~~~~~~~~~~~~~~~
 * Forbid multiple TaggableManagers via generic foreign keys.

0.11.1 (2013-25-11)
~~~~~~~~~~~~~~~~~~~
 * Fixed support for Django 1.4 and 1.5.

0.11.0 (2013-25-11)
~~~~~~~~~~~~~~~~~~~
 * Added support for prefetch_related on tags fields.
 * Fixed support for Django 1.7.
 * Made the tagging relations unserializeable again.
 * Allow more than one TaggableManager on models (assuming concrete FKs are
   used for the relations).

0.10.0 (2013-17-08)
~~~~~~~~~~~~~~~~~~~

 * Support for Django 1.6 and 1.7.
 * Python3 support
 * **Backwards incompatible:** Dropped support for Django < 1.4.5.
 * Tag names are unique now, use the provided South migrations to upgrade.

0.9.2 (2011-01-17)
~~~~~~~~~~~~~~~~~~

 * **Backwards incompatible:**  Forms containing a :class:`TaggableManager` by
   default now require tags, to change this provide ``blank=True`` to the
   :class:`TaggableManager`.
 * Now works with Django 1.3 (as of beta-1).

0.9.0 (2010-09-22)
~~~~~~~~~~~~~~~~~~

 * Added a Hebrew locale.
 * Added an index on the ``object_id`` field of ``TaggedItem``.
 * When displaying tags always join them with commas, never spaces.
 * The docs are now available `online <https://django-taggit.readthedocs.io/>`_.
 * Custom ``Tag`` models are now allowed.
 * **Backwards incompatible:**  Filtering on tags is no longer
   ``filter(tags__in=["foo"])``, it is written
   ``filter(tags__name__in=["foo"])``.
 * Added a German locale.
 * Added a Dutch locale.
 * Removed ``taggit.contrib.suggest``, it now lives in an external application,
   see :doc:`external_apps` for more information.

0.8.0 (2010-06-22)
~~~~~~~~~~~~~~~~~~

 * Fixed querying for objects using ``exclude(tags__in=tags)``.
 * Marked strings as translatable.

   * Added a Russian translation.
 * Created a `mailing list <http://groups.google.com/group/django-taggit>`_.
 * Smarter tagstring parsing for form field; ported from Jonathan
   Buchanan's `django-tagging
   <http://django-tagging.googlecode.com>`_. Now supports tags
   containing commas. See :ref:`tags-in-forms` for details.
 * Switched to using savepoints around the slug generation for tags.  This
   ensures that it works fine on databases (such as Postgres) which dirty a
   transaction with an ``IntegrityError``.
 * Added Python 2.4 compatibility.
 * Added Django 1.1 compatibility.
