Package: django-model-utils
Django model mixins and utilities.django-model-utilssupportsDjango3.2+.This app is available onPyPI.Getting HelpDocumentation for django-model-utils is availablehttps://django-model-utils.readthedocs.io/Run testsContributingPlease file bugs and send pull requests to theGitHub repositoryandissue
tracker. SeeCONTRIBUTING.rstfor details.Changelog4.4.0 (2024-02-10)Add support forPython 3.11Add support forPython 3.12Drop support forPython 3.7Add support forDjango 4.2Add support forDjango 5.0RemoveSaveSignalHandlingModel. This model used a modified copy of the internal Django methodModel.save_base()and had not been updated for upstream bug fixes changes since its addition.Add Swedish translationUse proper column name instead of attnameFix ValueError when calling prefetch_related for tracked ForeignKey fields4.3.1 (2022-11-15)Confirm support forDjango 4.0Add Spanish translationAdd French translationDrop Django 1.7 workaround fromselect_subclasses()Drop support forDjango < 3.2Drop support forPython 3.6Confirm support forDjango 4.14.3.0Never released due to packaging issues.4.2.0 (2021-10-11)Add support forDjango 3.2Drop support forDjango 3.0Add support forPython 3.10Added urlsafe token field.Introduce context manager for FieldTracker state reset (GH-#491)Fix performance regression of FieldTracker on FileField subclasses on Django 3.1+
(GH-#498)4.1.1 (2020-12-01)Appliedisortto codebase (Refs GH-#402)FixTypeErrorin save when model inherits from both TimeStampModel
and StatusModel. (Fixes GH-465)4.1.0 (2020-11-29)Breaking changes:FieldTrackernow marks fields as not changed afterrefresh_from_dbrespectingfieldsargument (GH-#404)FieldTrackernow respectsupdate_fieldschanged in overriddensave()method (GH-#404)FieldTrackernow resets states afterpre_save()and not anymoresave()signals, possibly altering the behaviour of overriddensave()methods (GH-#404)Other changes:Update InheritanceQuerySetMixin to avoid querying too much tablesTimeStampedModel now automatically adds ‘modified’ field as an update_fields
parameter even if it is forgotten while using save()Replace ugettext_lazy with gettext_lazy to satisfy Django deprecation warningAdd available_objects manager to SoftDeletableModel and add deprecation
warning to objects manager.StatusModel now automatically adds ‘status_changed’ field during save as an
update_fieldsparameter when ‘status’ is present in it to make sure it is not
forgotten.Update test requirementsMove tests to GitHub Actions:https://github.com/jazzband/django-model-utils/actionsDrop support forDjango 2.1Add support forPython 3.9Add support forDjango 3.14.0.0 (2019-12-11)AddedChoices.subset.Remove hacks for previously supported Django versions. (Fixes GH-390)Dropped support for Python 2.7. (Fixes GH-393)Dropped usage ofsixDrop support forDjango 1.11Add support forPython 3.8Add support forDjango 3.03.2.0 (2019.06.21)CatchAttributeErrorfor deferred abstract fields, fixes GH-331.Update documentation to explain usage oftimeframedmodel manager, fixes GH-118HonorOneToOneField.parent_link=False.Fix handling of deferred attributes on Django 1.10+, fixes GH-278FixFieldTracker.has_changed()andFieldTracker.previous()to return
correct responses for deferred fields.Add Simplified Chinese translations.Update AutoLastModifiedField so that at instance creation it will
always be set equal to created to make querying easier. Fixes GH-254Supportreversedfor all kinds ofChoicesobjects, fixes GH-309Fix Model instance non picklable GH-330Fix patchedsavein FieldTrackerUpgrades test requirements (pytest, pytest-django, pytest-cov) and
skips tox test with Python 3.5 and Django (trunk)Add UUIDModel and UUIDField support.3.1.2 (2018.05.09)Update InheritanceIterable to inherit from
ModelIterable instead of BaseIterable, fixes GH-277.Add all_objects Manager for ‘SoftDeletableModel’ to include soft
deleted objects on queries as per issue GH-2553.1.1 (2017.12.17)Update classifiers and README via GH-306, fixes GH-3053.1.0 (2017.12.11)Support for Django 2.0 via GH-298, fixes GH-297Remove old travis script via GH-300Fix codecov and switch to py.test #3013.0.0 (2017.04.13)Drop support for Python 2.6.Drop support for Django 1.4, 1.5, 1.6, 1.7.Exclude tests from the distribution, fixes GH-258.Add support for Django 1.11 GH-269Add a new model to disable pre_save/post_save signals2.6.1 (2017.01.11)Fix infinite recursion with multipleMonitorFieldanddefer()oronly()on Django 1.10+. Thanks Romain Garrigues. Merge of GH-242, fixes GH-241.FixInheritanceManagerandSoftDeletableManagerto respectself._queryset_classinstead of hardcoding the queryset class. Merge of
GH-250, fixes GH-249.Add mixins forSoftDeletableQuerySetandSoftDeletableManager, as stated
in the the documentation.FixSoftDeletableModel.delete()to use the correct database connection.
Merge of GH-239.Added boolean keyword argumentsofttoSoftDeletableModel.delete()that
revert to default behavior when set toFalse. Merge of GH-240.Enforced default manager inStatusModelto avoid manager order issues when
using abstract models that redefineobjectsmanager. Merge of GH-253, fixes
GH-251.2.6 (2016.09.19)AddedSoftDeletableModelabstract class, its manageerSoftDeletableManagerand querysetSoftDeletableQuerySet.Fix issue with field tracker and deferred FileField for Django 1.10.2.5.2 (2016.08.09)Includeruntests.pyin sdist.2.5.1 (2016.08.03)FixInheritanceQuerySetraising anAttributeErrorexception
under Django 1.9.Django 1.10 support regressed with changes between pre-alpha and final
release; 1.10 currently not supported.2.5 (2016.04.18)Drop support for Python 3.2.Add support for Django 1.10 pre-alpha.Track foreign keys on parent models properly when a tracker
is defined on a child model. Fixes GH-214.2.4 (2015.12.03)RemovePassThroughManager. Use Django’s built-inQuerySet.as_manager()and/orManager.from_queryset()utilities instead.Add support for Django 1.9.2.3.1 (2015-07-20)Remove all translation-related automation insetup.py. Fixes GH-178 and
GH-179. Thanks Joe Weiss, Matt Molyneaux, and others for the reports.2.3 (2015.07.17)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.2.2 (2014.07.31)Revert GH-130, restoring ability to accessFieldTrackerchanges 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.2.1.1 (2014.07.28)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.2.1.0 (2014.07.25)Add support for Django’s built-in migrations toMonitorFieldandStatusField.PassThroughManagernow has support for seeing exposed methods viadir, allowingIPythontab completion to be useful. Merge of GH-104,
fixes GH-55.Add pickle support for models usingFieldTracker.  Thanks Ondrej Slintak
for the report.  Thanks Matthew Schinckel for the fix.  Merge of GH-130,
fixes GH-83.2.0.3 (2014.03.19)Fixget_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.FixFieldTrackerwith deferred model attributes. Thanks Michael van
Tellingen. Merge of GH-115.FixInheritanceManagerwith self-referential FK; avoid infinite
recursion. Thanks rsenkbeil. Merge of GH-114.2.0.2 (2014.02.19)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.2.0.1 (2014.02.11)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.ImproveInheritanceManagerso any attributes added by using extra(select)
will be propagated onto children. Thanks Curtis Maloney. Merge of GH-101,
fixes GH-34.AddedInheritanceManagerMixin,InheritanceQuerySetMixin,PassThroughManagerMixin, andQueryManagerMixinto allow composing
their functionality with other custom manager/queryset subclasses (e.g. those
in GeoDjango). Thanks Douglas Meehan!2.0 (2014.01.06)BACKWARDS-INCOMPATIBLE: Indexing into aChoicesinstance 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 onStatusModel.Can passchoices_nametoStatusFieldto use a different name for
choices class attribute.STATUSis used by default.Can pass model subclasses, rather than strings, intoselect_subclasses(). Thanks Keryn Knight. Merge of GH-79.Deepcopying aChoicesinstance no longer fails with infinite recursion ingetattr. 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 inInheritanceManagerwith 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.1.5.0 (2013.08.29)Choicesnow accepts option-groupings. Fixes GH-14.Choicescan now be added to otherChoicesor to any iterable, and can be
compared for equality with itself. Thanks Tony Aldridge. (Merge of GH-76.)Choicesnow__contains__its Python identifier values. Thanks Keryn
Knight. (Merge of GH-69).Fixed a bug causingKeyErrorwhen saving with the parameterupdate_fieldsin which there are untracked fields. Thanks Mikhail
Silonov. (Merge of GH-70, fixes GH-71).FixedFieldTrackerusage on inherited models.  Fixes GH-57.Added mutable field support toFieldTracker(Merge of GH-73, fixes GH-74)1.4.0 (2013.06.03)IntroducedFieldTrackeras replacement forModelTracker, which is now
deprecated.PassThroughManager.for_queryset_class()no longer ignores superclassget_query_set. Thanks Andy Freeland.FixedInheritanceManagerbug with grandchildren in Django 1.6. Thanks
CrazyCasta.Fixed lack ofget_FOO_displaymethod forStatusField. Fixes GH-41.1.3.1 (2013.04.11)Added explicit default toBooleanFieldin tests, for Django trunk
compatibility.Fixed intermittentStatusFieldbug.  Fixes GH-29.Added Python 3 support.Dropped support for Django 1.2 and 1.3.  Django 1.4.2+ required.1.3.0 (2013.03.27)Allow specifying default value for aStatusField. Thanks Felipe
Prenholato.Fix callingcreate()on aRelatedManagerthat subclasses a dynamicPassThroughManager. Thanks SeiryuZ for the report. Fixes GH-24.Add workaround forhttps://code.djangoproject.com/ticket/16855in
InheritanceQuerySet to avoid overriding prior calls toselect_related(). Thanks ivirabyan.Added support for arbitrary levels of model inheritance in
InheritanceManager. Thanks ivirabyan. (This feature only works in Django
1.6+ due tohttps://code.djangoproject.com/ticket/16572).AddedModelTrackerfor tracking field changes between model saves. Thanks
Trey Hunner.1.2.0 (2013.01.27)Moved primary development fromBitbuckettoGitHub. Bitbucket mirror
will continue to receive updates; Bitbucket issue tracker will be closed once
all issues tracked in it are resolved.Removed deprecatedChoiceEnum,InheritanceCastModel,InheritanceCastManager, andmanager_from.Fixed pickling ofPassThroughManager. Thanks Rinat Shigapov.Setuse_for_related_fields = TrueonQueryManager.Added__len__method toChoices. Thanks Ryan Kaskel and James Oakley.FixedInheritanceQuerySeton Django 1.5. Thanks Javier Garcia Sogo.1.1.0 (2012.04.13)Updated AutoCreatedField, AutoLastModifiedField, MonitorField, and
TimeFramedModel to usedjango.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.AddedPassThroughManager.for_queryset_class(), which fixes use ofPassThroughManagerwith related fields. Thanks Ryan Kaskel for report and
fix.AddedInheritanceManager.get_subclass(). Thanks smacker.1.0.0 (2011.06.16)Fixed using SplitField on an abstract base model.Fixed issue #8, addinguse_for_related_fields = TruetoInheritanceManager.AddedPassThroughManager. Thanks Paul McLanahan.Added pending-deprecation warnings forInheritanceCastModel,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.0.6.0 (2011.02.18)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.0.5.0 (2010.09.24)added manager_from (thanks George Sakkis)added StatusField, MonitorField, TimeFramedModel, and StatusModel
(thanks Jannis Leidel)deprecated ChoiceEnum and replaced with Choices0.4.0 (2010.03.16)added SplitFieldadded ChoiceEnumadded South support for custom model fields0.3.0AddedQueryManager