- Fix InheritanceQuerySet raising an AttributeError exception under Django 1.9.
- Drop support for Python 3.2.
- Add support for Django 1.10.
- Track foreign keys on parent models properly when a tracker is defined on a child model. Fixes GH-214.
- Remove PassThroughManager. Use Django's built-in QuerySet.as_manager() and/or Manager.from_queryset() utilities instead.
- Add support for Django 1.9.
- Remove all translation-related automation in setup.py. Fixes GH-178 and GH-179. Thanks Joe Weiss, Matt Molyneaux, and others for the reports.
- Keep track of deferred fields on model instance instead of on FieldInstanceTracker instance. Fixes accessing deferred fields for multiple instances of a model from the same queryset. Thanks Bram Boogaard. Merge of GH-151.
- Fix Django 1.7 migrations compatibility for SplitField. Thanks ad-m. Merge of GH-157; fixes GH-156.
- Add German translations.
- Django 1.8 compatibility.
- Revert GH-130, restoring ability to access
FieldTrackerchanges in overriddensavemethods orpost_savehandlers. This reopens GH-83 (inability to pickle models withFieldTracker) until a solution can be found that doesn't break behavior otherwise. Thanks Brian May for the report. Fixes GH-143.
- ASCII-fold all non-ASCII characters in changelog; again. Argh. Apologies to those whose names are mangled by this change. It seems that distutils makes it impossible to handle non-ASCII content reliably under Python 3 in a setup.py long_description, when the system encoding may be ASCII. Thanks Brian May for the report. Fixes GH-141.
- Add support for Django's built-in migrations to
MonitorFieldandStatusField. PassThroughManagernow has support for seeing exposed methods viadir, allowing IPython tab completion to be useful. Merge of GH-104, fixes GH-55.- Add pickle support for models using
FieldTracker. Thanks Ondrej Slintak for the report. Thanks Matthew Schinckel for the fix. Merge of GH-130, fixes GH-83.
- Fix
get_query_setvsget_querysetinPassThroughManagerfor Django <1.6. Fixes issues with related managers not filtering by relation properly. Thanks whop, Bojan Mihelac, Daniel Shapiro, and Matthew Schinckel for the report; Matthew for the fix. Merge of GH-121. - Fix
FieldTrackerwith deferred model attributes. Thanks Michael van Tellingen. Merge of GH-115. - Fix
InheritanceManagerwith self-referential FK; avoid infinite recursion. Thanks rsenkbeil. Merge of GH-114.
- ASCII-fold all non-ASCII characters in changelog. Apologies to those whose names are mangled by this change. It seems that distutils makes it impossible to handle non-ASCII content reliably under Python 3 in a setup.py long_description, when the system encoding may be ASCII. Thanks Simone Dalla for the report. Fixes GH-113.
- Fix dependency to be on "Django" rather than "django", which plays better with static PyPI mirrors. Thanks Travis Swicegood.
- Fix issue with attempt to access
__slots__when copyingPassThroughManager. Thanks Patryk Zawadzki. Merge of GH-105. - Improve
InheritanceManagerso any attributes added by using extra(select) will be propagated onto children. Thanks Curtis Maloney. Merge of GH-101, fixes GH-34. - Added
InheritanceManagerMixin,InheritanceQuerySetMixin,PassThroughManagerMixin, andQueryManagerMixinto allow composing their functionality with other custom manager/queryset subclasses (e.g. those in GeoDjango). Thanks Douglas Meehan!
- BACKWARDS-INCOMPATIBLE: Indexing into a
Choicesinstance now translates database representations to human-readable choice names, rather than simply indexing into an array of choice tuples. (Indexing intoChoiceswas previously not documented.) If you have code that is relying on indexing or slicingChoices, the simplest workaround is to change e.g.STATUS[1:]tolist(STATUS)[1:]. - Fixed bug with checking for field name conflicts for added query managers on StatusModel.
- Can pass choices_name to StatusField to use a different name for
choices class attribute.
STATUSis used by default. - Can pass model subclasses, rather than strings, into select_subclasses(). Thanks Keryn Knight. Merge of GH-79.
- Deepcopying a Choices instance no longer fails with infinite recursion in getattr. Thanks Leden. Merge of GH-75.
- get_subclass() method is now available on both managers and querysets. Thanks Travis Swicegood. Merge of GH-82.
- Fix bug in InheritanceManager with grandchild classes on Django 1.6+; select_subclasses('child', 'child__grandchild') would only ever get to the child class. Thanks Keryn Knight for report and proposed fix.
- MonitorField now accepts a 'when' parameter. It will update only when the field changes to one of the values specified.
- Choices now accepts option-groupings. Fixes GH-14.
- Choices can now be added to other Choices or to any iterable, and can be compared for equality with itself. Thanks Tony Aldridge. (Merge of GH-76.)
- Choices now __contains__ its Python identifier values. Thanks Keryn Knight. (Merge of GH-69).
- Fixed a bug causing
KeyErrorwhen saving with the parameterupdate_fieldsin which there are untracked fields. Thanks Mikhail Silonov. (Merge of GH-70, fixes GH-71). - Fixed
FieldTrackerusage on inherited models. Fixes GH-57. - Added mutable field support to
FieldTracker(Merge of GH-73, fixes GH-74)
- Introduced
FieldTrackeras replacement forModelTracker, which is now deprecated. PassThroughManager.for_queryset_class()no longer ignores superclassget_query_set. Thanks Andy Freeland.- Fixed
InheritanceManagerbug with grandchildren in Django 1.6. Thanks CrazyCasta. - Fixed lack of
get_FOO_displaymethod forStatusField. Fixes GH-41.
- Added explicit default to
BooleanFieldin tests, for Django trunk compatibility. - Fixed intermittent
StatusFieldbug. Fixes GH-29. - Added Python 3 support.
- Dropped support for Django 1.2 and 1.3. Django 1.4.2+ required.
- Allow specifying default value for a
StatusField. Thanks Felipe Prenholato. - Fix calling
create()on aRelatedManagerthat subclasses a dynamicPassThroughManager. Thanks SeiryuZ for the report. Fixes GH-24. - Add workaround for https://code.djangoproject.com/ticket/16855 in
InheritanceQuerySet to avoid overriding prior calls to
select_related(). Thanks ivirabyan. - Added support for arbitrary levels of model inheritance in InheritanceManager. Thanks ivirabyan. (This feature only works in Django 1.6+ due to https://code.djangoproject.com/ticket/16572).
- Added
ModelTrackerfor tracking field changes between model saves. Thanks Trey Hunner.
- Moved primary development from Bitbucket to GitHub. Bitbucket mirror will continue to receive updates; Bitbucket issue tracker will be closed once all issues tracked in it are resolved.
- Removed deprecated
ChoiceEnum,InheritanceCastModel,InheritanceCastManager, andmanager_from. - Fixed pickling of
PassThroughManager. Thanks Rinat Shigapov. - Set
use_for_related_fields = TrueonQueryManager. - Added
__len__method toChoices. Thanks Ryan Kaskel and James Oakley. - Fixed
InheritanceQuerySeton Django 1.5. Thanks Javier Garcia Sogo.
- Updated AutoCreatedField, AutoLastModifiedField, MonitorField, and
TimeFramedModel to use
django.utils.timezone.nowon Django 1.4. Thanks Donald Stufft. - Fixed annotation of InheritanceQuerysets. Thanks Jeff Elmore and Facundo Gaich.
- Dropped support for Python 2.5 and Django 1.1. Both are no longer supported even for security fixes, and should not be used.
- Added
PassThroughManager.for_queryset_class(), which fixes use ofPassThroughManagerwith related fields. Thanks Ryan Kaskel for report and fix. - Added
InheritanceManager.get_subclass(). Thanks smacker.
- Fixed using SplitField on an abstract base model.
- Fixed issue #8, adding
use_for_related_fields = TruetoInheritanceManager. - Added
PassThroughManager. Thanks Paul McLanahan. - Added pending-deprecation warnings for
InheritanceCastModel,manager_from, and Django 1.1 support. Removed documentation for the deprecated utilities. BumpedChoiceEnumfrom pending-deprecation to deprecation. - Fixed issue #6, bug with InheritanceManager and descriptor fields (e.g. FileField). Thanks zyegfryed for the fix and sayane for tests.
- updated SplitField to define get_prep_value rather than get_db_prep_value. This avoids deprecation warnings on Django trunk/1.3, but makes SplitField incompatible with Django versions prior to 1.2.
- added InheritanceManager, a better approach to selecting subclass instances for Django 1.2+. Thanks Jeff Elmore.
- added InheritanceCastManager and InheritanceCastQuerySet, to allow bulk casting of a queryset to child types. Thanks Gregor Muellegger.
- added manager_from (thanks George Sakkis)
- added StatusField, MonitorField, TimeFramedModel, and StatusModel (thanks Jannis Leidel)
- deprecated ChoiceEnum and replaced with Choices
- added SplitField
- added ChoiceEnum
- added South support for custom model fields
- Added
QueryManager