2021-04-08 12:54:11 +00:00
|
|
|
Changelog
|
|
|
|
|
=========
|
2010-01-07 04:48:44 +00:00
|
|
|
|
2023-04-06 12:36:40 +00:00
|
|
|
To be released
|
2024-03-21 07:36:00 +00:00
|
|
|
--------------
|
2024-08-28 07:48:40 +00:00
|
|
|
- Add formal support for `Django 5.1`
|
2024-04-04 08:26:17 +00:00
|
|
|
- Remove MonitorField deprecation warning. `None` - instead of
|
|
|
|
|
`django.utils.timezone.now` will be used when nullable and no default provided (GH-#599)
|
2023-07-19 22:39:36 +00:00
|
|
|
- Add deprecation warning for MonitorField. The default value will be `None`
|
|
|
|
|
instead of `django.utils.timezone.now` - when nullable and without a default.
|
2024-03-21 07:36:00 +00:00
|
|
|
- Add Brazilian Portuguese translation (GH-#578)
|
2023-02-05 09:41:14 +00:00
|
|
|
- Don't use `post_init` signal for initialize tracker
|
2024-04-03 06:53:52 +00:00
|
|
|
- Make `contribute_to_class()` in `StatusField`, `MonitorField` and `SplitField`
|
|
|
|
|
forward additional arguments to Django
|
2024-04-10 12:17:34 +00:00
|
|
|
- `SplitField` no longer accepts `no_excerpt_field` as a keyword argument
|
2023-03-20 12:33:47 +00:00
|
|
|
- Make `soft` argument to `SoftDeletableModel.delete()` keyword-only
|
2024-04-17 12:44:05 +00:00
|
|
|
- `JoinManager` and `JoinManagerMixin` have been deprecated;
|
|
|
|
|
please use ``JoinQueryset.as_manager()`` instead
|
2023-02-05 09:41:14 +00:00
|
|
|
|
2024-05-02 11:07:01 +00:00
|
|
|
4.5.1 (2024-05-02)
|
|
|
|
|
------------------
|
|
|
|
|
|
|
|
|
|
- Remove `JoinQueryset.get_quoted_query()` by @mthuurne (GH-#618)
|
|
|
|
|
|
|
|
|
|
4.5.0 (2024-04-01)
|
|
|
|
|
------------------
|
|
|
|
|
|
|
|
|
|
- Don't use `post_init` signal for initialize tracker by @meanmail in - (GH-#556)
|
|
|
|
|
- clarify docs for managers of SoftDeletableModel by @tadamcz in - (GH-#589)
|
|
|
|
|
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in - (GH-#575)
|
|
|
|
|
- `Language Support` - Add translations for Brazilian Portuguese by @gmcrocetti in - (GH-#578)
|
|
|
|
|
- Remove dead `init_deferred_fields` method by @joecox in - (GH-#580)
|
|
|
|
|
- Update where `ConnectionDoesNotExist` is imported from by @mthuurne in - (GH-#566)
|
|
|
|
|
- Remove arguments from `InheritanceQuerySetMixin._clone()` by @mthuurne in - (GH-#567)
|
|
|
|
|
- Allow running tests using sqlite by @jayvdb in - (GH-#516)
|
|
|
|
|
- `MonitorField` - Change default to None when the field is nullable by @gmcrocetti in - (GH-#577)
|
|
|
|
|
- Explicitly re-export names from `__init__` module by @mthuurne in - (GH-#591)
|
|
|
|
|
- Switch from freezegun to time-machine. by @adamchainz in - (GH-#510)
|
|
|
|
|
- USE_TZ = True by @foarsitter in - (GH-#593)
|
|
|
|
|
- Remove redundant definition of `JoinManager` from tests by @mthuurne in - (GH-#594)
|
|
|
|
|
- Pass reason to `@skip` decorator by @mthuurne in - (GH-#595)
|
|
|
|
|
- Resolve name clash among test models by @mthuurne in - (GH-#596)
|
|
|
|
|
- Remove obsolete `tests.signals` module by @mthuurne in - (GH-#597)
|
|
|
|
|
- Remove obsolete test models by @mthuurne in - (GH-#598)
|
|
|
|
|
- Postgresql docker container for local development by @foarsitter in - (GH-#563)
|
|
|
|
|
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in - (GH-#602)
|
|
|
|
|
- Add issue-manager by @foarsitter in - (GH-#600)
|
|
|
|
|
- Translation files by @foarsitter in - (GH-#608)
|
|
|
|
|
|
2024-02-10 16:09:14 +00:00
|
|
|
4.4.0 (2024-02-10)
|
|
|
|
|
------------------
|
2023-04-06 12:36:40 +00:00
|
|
|
|
2023-06-15 18:18:03 +00:00
|
|
|
- Add support for `Python 3.11` (GH-#545)
|
|
|
|
|
- Add support for `Python 3.12` (GH-#545)
|
|
|
|
|
- Drop support for `Python 3.7` (GH-#545)
|
2024-02-10 16:09:14 +00:00
|
|
|
- Add support for `Django 4.2`
|
|
|
|
|
- Add support for `Django 5.0`
|
2023-10-26 15:53:16 +00:00
|
|
|
- Remove ``SaveSignalHandlingModel``. This model used a modified copy of the internal Django method `Model.save_base()`
|
2024-02-10 16:09:14 +00:00
|
|
|
and had not been updated for upstream bug fixes changes since its addition.
|
|
|
|
|
- Add Swedish translation
|
2023-06-16 13:34:47 +00:00
|
|
|
- Use proper column name instead of attname (GH-#573)
|
2024-02-10 16:09:14 +00:00
|
|
|
- Fix ValueError when calling prefetch_related for tracked ForeignKey fields
|
2023-04-06 12:36:40 +00:00
|
|
|
|
2022-11-16 00:04:31 +00:00
|
|
|
4.3.1 (2022-11-15)
|
|
|
|
|
------------------
|
2021-10-09 21:18:08 +00:00
|
|
|
|
2021-12-07 15:44:32 +00:00
|
|
|
- Confirm support for `Django 4.0`
|
2022-03-14 02:36:04 +00:00
|
|
|
- Add Spanish translation
|
|
|
|
|
- Add French translation
|
2022-04-04 10:57:27 +00:00
|
|
|
- Drop Django 1.7 workaround from `select_subclasses()`
|
2022-08-17 20:49:23 +00:00
|
|
|
- Drop support for `Django < 3.2`
|
2022-08-17 20:54:39 +00:00
|
|
|
- Drop support for `Python 3.6`
|
2022-08-17 21:01:45 +00:00
|
|
|
- Confirm support for `Django 4.1`
|
2021-10-09 21:18:08 +00:00
|
|
|
|
2022-11-16 00:04:31 +00:00
|
|
|
4.3.0
|
|
|
|
|
-----
|
|
|
|
|
|
|
|
|
|
- Never released due to packaging issues.
|
|
|
|
|
|
2021-10-11 07:59:26 +00:00
|
|
|
4.2.0 (2021-10-11)
|
2019-12-11 14:48:26 +00:00
|
|
|
------------------
|
2021-10-09 21:18:08 +00:00
|
|
|
|
2021-04-07 07:14:55 +00:00
|
|
|
- Add support for `Django 3.2`
|
2021-04-07 07:16:19 +00:00
|
|
|
- Drop support for `Django 3.0`
|
2021-10-07 20:23:58 +00:00
|
|
|
- Add support for `Python 3.10`
|
2021-03-10 09:06:34 +00:00
|
|
|
- Added urlsafe token field.
|
2021-10-08 09:09:20 +00:00
|
|
|
- Introduce context manager for FieldTracker state reset (GH-#491)
|
2021-10-09 15:30:12 +00:00
|
|
|
- Fix performance regression of FieldTracker on FileField subclasses on Django 3.1+
|
|
|
|
|
(GH-#498)
|
2021-03-10 09:06:34 +00:00
|
|
|
|
2020-12-01 23:11:29 +00:00
|
|
|
4.1.1 (2020-12-01)
|
2020-11-29 20:58:00 +00:00
|
|
|
------------------
|
2021-10-08 09:09:20 +00:00
|
|
|
|
2020-11-29 20:58:00 +00:00
|
|
|
- Applied `isort` to codebase (Refs GH-#402)
|
2020-12-01 22:10:36 +00:00
|
|
|
- Fix `TypeError` in save when model inherits from both TimeStampModel
|
|
|
|
|
and StatusModel. (Fixes GH-465)
|
2020-11-29 20:58:00 +00:00
|
|
|
|
2020-11-29 13:59:28 +00:00
|
|
|
4.1.0 (2020-11-29)
|
2019-12-11 14:48:26 +00:00
|
|
|
------------------
|
2021-10-08 09:09:20 +00:00
|
|
|
|
|
|
|
|
**Breaking changes:**
|
2021-10-11 07:59:26 +00:00
|
|
|
|
2019-12-15 14:28:15 +00:00
|
|
|
- `FieldTracker` now marks fields as not changed after `refresh_from_db`
|
2021-10-08 09:09:20 +00:00
|
|
|
respecting `fields` argument (GH-#404)
|
2019-12-15 16:43:58 +00:00
|
|
|
- `FieldTracker` now respects `update_fields` changed in overridden `save()`
|
2021-10-08 09:09:20 +00:00
|
|
|
method (GH-#404)
|
|
|
|
|
- `FieldTracker` now resets states after `pre_save()` and not anymore `save()`
|
|
|
|
|
signals, possibly altering the behaviour of overridden `save()`
|
|
|
|
|
methods (GH-#404)
|
|
|
|
|
|
|
|
|
|
**Other changes:**
|
2021-10-11 07:59:26 +00:00
|
|
|
|
managers: avoid querying too much tables when not needed
When calling `select_related()` with an empty list of arguments [1], Django will
try to prefetch some data by doing some first level joints with the related
classes.
This can lead to obvious negative performance impact, but this also breaks some
workarounds for having inheritance for foreign keys [2], as those solutions rely
on lazy evaluation of the related object.
[1]: https://github.com/django/django/blob/a4e6030904df63b3f10aa0729b86dc6942b0458e/django/db/models/query.py#L1051
Only passing an explicit `None` to `select_related` will disable the magic.
[2]: https://github.com/jazzband/django-model-utils/issues/11
As examples, here are the generated SQL requests in
InheritanceManagerRelatedTests.test_get_method_with_select_subclasses_check_for_useless_join:
* without this fix, without adding `.select_related(None)`
```sql
SELECT
"tests_inheritancemanagertestparent"."id",
"tests_inheritancemanagertestparent"."non_related_field_using_descriptor",
"tests_inheritancemanagertestparent"."related_id",
"tests_inheritancemanagertestparent"."normal_field",
"tests_inheritancemanagertestparent"."related_self_id",
"tests_inheritancemanagertestchild4"."other_onetoone_id",
"tests_inheritancemanagertestchild4"."parent_ptr_id", T3."id",
T3."non_related_field_using_descriptor", T3."related_id", T3."normal_field",
T3."related_self_id"
FROM
"tests_inheritancemanagertestchild4"
INNER JOIN
"tests_inheritancemanagertestparent" ON
("tests_inheritancemanagertestchild4"."parent_ptr_id" = "tests_inheritancemanagertestparent"."id")
INNER JOIN
"tests_inheritancemanagertestparent" T3 ON
("tests_inheritancemanagertestchild4"."other_onetoone_id" = T3."id")
WHERE
"tests_inheritancemanagertestchild4"."parent_ptr_id" = 191
```
* with either the fix, or by adding `.select_related(None)` after `.select_subclasses()`
```sql
SELECT
"tests_inheritancemanagertestparent"."id",
"tests_inheritancemanagertestparent"."non_related_field_using_descriptor",
"tests_inheritancemanagertestparent"."related_id",
"tests_inheritancemanagertestparent"."normal_field",
"tests_inheritancemanagertestparent"."related_self_id",
"tests_inheritancemanagertestchild4"."other_onetoone_id",
"tests_inheritancemanagertestchild4"."parent_ptr_id"
FROM
"tests_inheritancemanagertestchild4"
INNER JOIN
"tests_inheritancemanagertestparent" ON
("tests_inheritancemanagertestchild4"."parent_ptr_id" = "tests_inheritancemanagertestparent"."id")
WHERE
"tests_inheritancemanagertestchild4"."parent_ptr_id" = 191
```
2020-07-06 13:18:42 +00:00
|
|
|
- Update InheritanceQuerySetMixin to avoid querying too much tables
|
2020-03-02 07:21:26 +00:00
|
|
|
- TimeStampedModel now automatically adds 'modified' field as an update_fields
|
|
|
|
|
parameter even if it is forgotten while using save()
|
2020-02-29 23:05:16 +00:00
|
|
|
- Replace ugettext_lazy with gettext_lazy to satisfy Django deprecation warning
|
2020-08-12 10:25:34 +00:00
|
|
|
- Add available_objects manager to SoftDeletableModel and add deprecation
|
|
|
|
|
warning to objects manager.
|
2020-09-17 14:34:57 +00:00
|
|
|
- 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.
|
2020-09-17 12:07:54 +00:00
|
|
|
- Update test requirements
|
2020-11-29 13:53:42 +00:00
|
|
|
- Move tests to GitHub Actions: https://github.com/jazzband/django-model-utils/actions
|
2020-11-29 13:59:28 +00:00
|
|
|
- Drop support for `Django 2.1`
|
|
|
|
|
- Add support for `Python 3.9`
|
|
|
|
|
- Add support for `Django 3.1`
|
2019-12-11 14:48:26 +00:00
|
|
|
|
2019-12-11 14:47:02 +00:00
|
|
|
4.0.0 (2019-12-11)
|
2019-08-21 09:19:13 +00:00
|
|
|
------------------
|
2019-12-11 15:06:03 +00:00
|
|
|
- Added `Choices.subset`.
|
2019-08-21 09:19:13 +00:00
|
|
|
- Remove hacks for previously supported Django versions. (Fixes GH-390)
|
2019-09-30 08:08:52 +00:00
|
|
|
- Dropped support for Python 2.7. (Fixes GH-393)
|
2019-12-09 13:37:16 +00:00
|
|
|
- Dropped usage of `six`
|
|
|
|
|
- Drop support for `Django 1.11`
|
2019-12-11 14:47:02 +00:00
|
|
|
- Add support for `Python 3.8`
|
2019-12-09 13:37:16 +00:00
|
|
|
- Add support for `Django 3.0`
|
2019-08-21 09:19:13 +00:00
|
|
|
|
2019-06-21 15:18:00 +00:00
|
|
|
3.2.0 (2019.06.21)
|
2017-04-13 23:51:52 +00:00
|
|
|
-------------------
|
2019-03-29 06:46:40 +00:00
|
|
|
- Catch `AttributeError` for deferred abstract fields, fixes GH-331.
|
2019-03-20 09:07:00 +00:00
|
|
|
- Update documentation to explain usage of `timeframed` model manager, fixes GH-118
|
2019-03-12 17:29:02 +00:00
|
|
|
- Honor `OneToOneField.parent_link=False`.
|
2018-04-03 23:10:30 +00:00
|
|
|
- Fix handling of deferred attributes on Django 1.10+, fixes GH-278
|
2018-06-30 22:52:00 +00:00
|
|
|
- Fix `FieldTracker.has_changed()` and `FieldTracker.previous()` to return
|
|
|
|
|
correct responses for deferred fields.
|
2018-10-23 07:38:04 +00:00
|
|
|
- Add Simplified Chinese translations.
|
2018-12-08 06:23:04 +00:00
|
|
|
- Update AutoLastModifiedField so that at instance creation it will
|
|
|
|
|
always be set equal to created to make querying easier. Fixes GH-254
|
2018-12-08 05:47:54 +00:00
|
|
|
- Support `reversed` for all kinds of `Choices` objects, fixes GH-309
|
2018-11-20 14:49:52 +00:00
|
|
|
- Fix Model instance non picklable GH-330
|
2018-12-10 15:35:26 +00:00
|
|
|
- Fix patched `save` in FieldTracker
|
2019-03-29 06:46:40 +00:00
|
|
|
- Upgrades test requirements (pytest, pytest-django, pytest-cov) and
|
2019-02-21 18:05:35 +00:00
|
|
|
skips tox test with Python 3.5 and Django (trunk)
|
2019-02-26 17:41:23 +00:00
|
|
|
- Add UUIDModel and UUIDField support.
|
2018-05-09 17:45:37 +00:00
|
|
|
|
|
|
|
|
3.1.2 (2018.05.09)
|
|
|
|
|
------------------
|
2019-12-09 13:37:16 +00:00
|
|
|
- Update InheritanceIterable to inherit from
|
2017-06-23 13:56:51 +00:00
|
|
|
ModelIterable instead of BaseIterable, fixes GH-277.
|
2017-04-13 23:51:52 +00:00
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Add all_objects Manager for 'SoftDeletableModel' to include soft
|
2018-12-08 05:50:10 +00:00
|
|
|
deleted objects on queries as per issue GH-255
|
|
|
|
|
|
2017-12-17 13:45:56 +00:00
|
|
|
3.1.1 (2017.12.17)
|
|
|
|
|
------------------
|
|
|
|
|
|
|
|
|
|
- Update classifiers and README via GH-306, fixes GH-305
|
|
|
|
|
|
2017-12-11 14:27:41 +00:00
|
|
|
3.1.0 (2017.12.11)
|
|
|
|
|
------------------
|
|
|
|
|
|
|
|
|
|
- Support for Django 2.0 via GH-298, fixes GH-297
|
|
|
|
|
- Remove old travis script via GH-300
|
|
|
|
|
- Fix codecov and switch to py.test #301
|
|
|
|
|
|
2017-04-13 23:49:58 +00:00
|
|
|
3.0.0 (2017.04.13)
|
|
|
|
|
------------------
|
2017-01-12 00:07:17 +00:00
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- 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-269
|
|
|
|
|
- Add a new model to disable pre_save/post_save signals
|
2016-03-27 00:02:49 +00:00
|
|
|
|
|
|
|
|
|
2017-01-11 23:37:06 +00:00
|
|
|
2.6.1 (2017.01.11)
|
|
|
|
|
------------------
|
2016-09-19 14:05:40 +00:00
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Fix infinite recursion with multiple `MonitorField` and `defer()` or `only()`
|
2017-01-07 14:20:00 +00:00
|
|
|
on Django 1.10+. Thanks Romain Garrigues. Merge of GH-242, fixes GH-241.
|
2017-01-11 23:35:51 +00:00
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Fix `InheritanceManager` and `SoftDeletableManager` to respect
|
2017-01-07 14:20:00 +00:00
|
|
|
`self._queryset_class` instead of hardcoding the queryset class. Merge of
|
|
|
|
|
GH-250, fixes GH-249.
|
2017-01-11 23:35:51 +00:00
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Add mixins for `SoftDeletableQuerySet` and `SoftDeletableManager`, as stated
|
2017-01-05 18:32:33 +00:00
|
|
|
in the the documentation.
|
2017-01-11 23:35:51 +00:00
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Fix `SoftDeletableModel.delete()` to use the correct database connection.
|
2017-01-09 13:29:07 +00:00
|
|
|
Merge of GH-239.
|
2017-01-11 23:35:51 +00:00
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Added boolean keyword argument `soft` to `SoftDeletableModel.delete()` that
|
2017-01-09 13:29:07 +00:00
|
|
|
revert to default behavior when set to `False`. Merge of GH-240.
|
2017-01-11 23:35:51 +00:00
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Enforced default manager in `StatusModel` to avoid manager order issues when
|
2017-01-11 23:35:51 +00:00
|
|
|
using abstract models that redefine `objects` manager. Merge of GH-253, fixes
|
|
|
|
|
GH-251.
|
2016-09-19 14:05:40 +00:00
|
|
|
|
2017-01-11 12:22:59 +00:00
|
|
|
|
2016-09-19 14:03:42 +00:00
|
|
|
2.6 (2016.09.19)
|
|
|
|
|
----------------
|
2016-08-09 21:09:11 +00:00
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Added `SoftDeletableModel` abstract class, its manageer
|
2016-09-12 11:50:03 +00:00
|
|
|
`SoftDeletableManager` and queryset `SoftDeletableQuerySet`.
|
|
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Fix issue with field tracker and deferred FileField for Django 1.10.
|
2016-09-05 14:51:48 +00:00
|
|
|
|
2016-08-09 21:09:11 +00:00
|
|
|
|
2016-08-09 21:06:49 +00:00
|
|
|
2.5.2 (2016.08.09)
|
|
|
|
|
------------------
|
|
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Include `runtests.py` in sdist.
|
2016-04-18 21:08:15 +00:00
|
|
|
|
2016-08-03 14:44:29 +00:00
|
|
|
|
|
|
|
|
2.5.1 (2016.08.03)
|
|
|
|
|
------------------
|
|
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Fix `InheritanceQuerySet` raising an `AttributeError` exception
|
2016-05-25 10:51:41 +00:00
|
|
|
under Django 1.9.
|
|
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Django 1.10 support regressed with changes between pre-alpha and final
|
2016-08-03 14:38:59 +00:00
|
|
|
release; 1.10 currently not supported.
|
2016-04-18 21:08:15 +00:00
|
|
|
|
2016-08-03 14:38:59 +00:00
|
|
|
|
|
|
|
|
2.5 (2016.04.18)
|
2016-04-18 21:02:40 +00:00
|
|
|
----------------
|
2015-12-02 17:55:59 +00:00
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Drop support for Python 3.2.
|
2016-02-08 22:30:51 +00:00
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Add support for Django 1.10 pre-alpha.
|
2016-02-08 23:24:10 +00:00
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Track foreign keys on parent models properly when a tracker
|
2016-03-31 14:26:11 +00:00
|
|
|
is defined on a child model. Fixes GH-214.
|
|
|
|
|
|
2016-02-08 23:24:10 +00:00
|
|
|
|
2016-08-03 14:38:59 +00:00
|
|
|
2.4 (2015.12.03)
|
2015-12-02 17:43:11 +00:00
|
|
|
----------------
|
2015-07-20 16:32:18 +00:00
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Remove `PassThroughManager`. Use Django's built-in `QuerySet.as_manager()`
|
2015-12-02 19:47:07 +00:00
|
|
|
and/or `Manager.from_queryset()` utilities instead.
|
|
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Add support for Django 1.9.
|
2015-10-28 23:16:50 +00:00
|
|
|
|
2015-12-02 19:47:07 +00:00
|
|
|
|
2015-07-20 16:22:27 +00:00
|
|
|
2.3.1 (2015-07-20)
|
|
|
|
|
------------------
|
2015-07-17 19:02:07 +00:00
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Remove all translation-related automation in `setup.py`. Fixes GH-178 and
|
2015-07-20 15:56:07 +00:00
|
|
|
GH-179. Thanks Joe Weiss, Matt Molyneaux, and others for the reports.
|
|
|
|
|
|
2015-07-17 19:02:07 +00:00
|
|
|
|
2015-07-17 17:38:39 +00:00
|
|
|
2.3 (2015.07.17)
|
|
|
|
|
----------------
|
2014-08-01 00:57:29 +00:00
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Keep track of deferred fields on model instance instead of on
|
2014-09-22 18:12:39 +00:00
|
|
|
FieldInstanceTracker instance. Fixes accessing deferred fields for multiple
|
|
|
|
|
instances of a model from the same queryset. Thanks Bram Boogaard. Merge of
|
|
|
|
|
GH-151.
|
2014-09-01 07:30:29 +00:00
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Fix Django 1.7 migrations compatibility for SplitField. Thanks ad-m. Merge of
|
2014-10-29 22:20:02 +00:00
|
|
|
GH-157; fixes GH-156.
|
2015-07-17 17:37:59 +00:00
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Add German translations.
|
2014-10-29 22:20:02 +00:00
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Django 1.8 compatibility.
|
2015-07-17 17:37:59 +00:00
|
|
|
|
2014-09-01 07:30:29 +00:00
|
|
|
|
2014-08-01 00:16:15 +00:00
|
|
|
2.2 (2014.07.31)
|
|
|
|
|
----------------
|
|
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Revert GH-130, restoring ability to access ``FieldTracker`` changes in
|
2014-08-01 00:16:15 +00:00
|
|
|
overridden ``save`` methods or ``post_save`` handlers. This reopens GH-83
|
|
|
|
|
(inability to pickle models with ``FieldTracker``) until a solution can be
|
|
|
|
|
found that doesn't break behavior otherwise. Thanks Brian May for the
|
|
|
|
|
report. Fixes GH-143.
|
|
|
|
|
|
2014-07-25 16:00:46 +00:00
|
|
|
|
2014-07-28 16:00:40 +00:00
|
|
|
2.1.1 (2014.07.28)
|
2014-07-28 15:59:23 +00:00
|
|
|
------------------
|
|
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- ASCII-fold all non-ASCII characters in changelog; again. Argh. Apologies to
|
2014-07-28 15:55:18 +00:00
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
2014-07-25 15:52:55 +00:00
|
|
|
2.1.0 (2014.07.25)
|
|
|
|
|
------------------
|
2014-03-20 04:48:13 +00:00
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Add support for Django's built-in migrations to ``MonitorField`` and
|
2014-04-25 20:41:56 +00:00
|
|
|
``StatusField``.
|
|
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- ``PassThroughManager`` now has support for seeing exposed methods via
|
2013-11-24 14:16:18 +00:00
|
|
|
``dir``, allowing `IPython`_ tab completion to be useful. Merge of GH-104,
|
|
|
|
|
fixes GH-55.
|
|
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Add pickle support for models using ``FieldTracker``. Thanks Ondrej Slintak
|
2014-05-13 21:29:58 +00:00
|
|
|
for the report. Thanks Matthew Schinckel for the fix. Merge of GH-130,
|
|
|
|
|
fixes GH-83.
|
|
|
|
|
|
2023-01-28 03:44:56 +00:00
|
|
|
.. _IPython: https://ipython.org/
|
2013-11-24 14:16:18 +00:00
|
|
|
|
2014-03-20 04:48:13 +00:00
|
|
|
|
2014-03-20 04:41:27 +00:00
|
|
|
2.0.3 (2014.03.19)
|
2014-02-19 21:01:51 +00:00
|
|
|
-------------------
|
|
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Fix ``get_query_set`` vs ``get_queryset`` in ``PassThroughManager`` for
|
2014-03-20 04:27:56 +00:00
|
|
|
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.
|
|
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Fix ``FieldTracker`` with deferred model attributes. Thanks Michael van
|
2014-03-02 19:20:55 +00:00
|
|
|
Tellingen. Merge of GH-115.
|
|
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Fix ``InheritanceManager`` with self-referential FK; avoid infinite
|
2014-02-19 22:42:37 +00:00
|
|
|
recursion. Thanks rsenkbeil. Merge of GH-114.
|
|
|
|
|
|
2014-02-19 20:55:29 +00:00
|
|
|
2.0.2 (2014.02.19)
|
2014-02-11 22:03:08 +00:00
|
|
|
-------------------
|
|
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- ASCII-fold all non-ASCII characters in changelog. Apologies to those whose
|
2014-02-19 20:55:29 +00:00
|
|
|
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.
|
|
|
|
|
|
2014-02-11 22:03:08 +00:00
|
|
|
|
|
|
|
|
2.0.1 (2014.02.11)
|
2014-01-07 01:26:01 +00:00
|
|
|
-------------------
|
|
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Fix dependency to be on "Django" rather than "django", which plays better
|
2014-02-11 21:58:18 +00:00
|
|
|
with static PyPI mirrors. Thanks Travis Swicegood.
|
|
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Fix issue with attempt to access ``__slots__`` when copying
|
2014-01-26 00:40:25 +00:00
|
|
|
``PassThroughManager``. Thanks Patryk Zawadzki. Merge of GH-105.
|
|
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Improve ``InheritanceManager`` so any attributes added by using extra(select)
|
2014-01-26 00:40:25 +00:00
|
|
|
will be propagated onto children. Thanks Curtis Maloney. Merge of GH-101,
|
|
|
|
|
fixes GH-34.
|
|
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Added ``InheritanceManagerMixin``, ``InheritanceQuerySetMixin``,
|
2014-01-10 23:29:44 +00:00
|
|
|
``PassThroughManagerMixin``, and ``QueryManagerMixin`` to allow composing
|
|
|
|
|
their functionality with other custom manager/queryset subclasses (e.g. those
|
|
|
|
|
in GeoDjango). Thanks Douglas Meehan!
|
|
|
|
|
|
|
|
|
|
|
2014-01-07 01:22:24 +00:00
|
|
|
2.0 (2014.01.06)
|
|
|
|
|
----------------
|
|
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- BACKWARDS-INCOMPATIBLE: Indexing into a ``Choices`` instance now translates
|
2014-01-07 01:22:24 +00:00
|
|
|
database representations to human-readable choice names, rather than simply
|
|
|
|
|
indexing into an array of choice tuples. (Indexing into ``Choices`` was
|
|
|
|
|
previously not documented.) If you have code that is relying on indexing or
|
|
|
|
|
slicing ``Choices``, the simplest workaround is to change e.g. ``STATUS[1:]``
|
|
|
|
|
to ``list(STATUS)[1:]``.
|
2013-08-30 04:35:32 +00:00
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Fixed bug with checking for field name conflicts for added query managers on
|
2014-01-06 23:03:44 +00:00
|
|
|
`StatusModel`.
|
|
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Can pass `choices_name` to `StatusField` to use a different name for
|
2013-11-14 19:39:19 +00:00
|
|
|
choices class attribute. ``STATUS`` is used by default.
|
|
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Can pass model subclasses, rather than strings, into
|
2013-10-22 18:15:17 +00:00
|
|
|
`select_subclasses()`. Thanks Keryn Knight. Merge of GH-79.
|
|
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Deepcopying a `Choices` instance no longer fails with infinite recursion in
|
2013-10-11 19:25:37 +00:00
|
|
|
`getattr`. Thanks Leden. Merge of GH-75.
|
|
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- `get_subclass()` method is now available on both managers and
|
2013-10-08 17:15:01 +00:00
|
|
|
querysets. Thanks Travis Swicegood. Merge of GH-82.
|
|
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Fix bug in `InheritanceManager` with grandchild classes on Django 1.6+;
|
2013-09-20 16:04:10 +00:00
|
|
|
`select_subclasses('child', 'child__grandchild')` would only ever get to the
|
|
|
|
|
child class. Thanks Keryn Knight for report and proposed fix.
|
|
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- MonitorField now accepts a 'when' parameter. It will update only when the field
|
2013-10-11 03:08:38 +00:00
|
|
|
changes to one of the values specified.
|
|
|
|
|
|
2013-08-30 04:35:32 +00:00
|
|
|
|
2013-08-30 04:06:44 +00:00
|
|
|
1.5.0 (2013.08.29)
|
|
|
|
|
------------------
|
2013-06-03 20:27:24 +00:00
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- `Choices` now accepts option-groupings. Fixes GH-14.
|
2013-08-30 04:00:53 +00:00
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- `Choices` can now be added to other `Choices` or to any iterable, and can be
|
2013-08-25 15:04:27 +00:00
|
|
|
compared for equality with itself. Thanks Tony Aldridge. (Merge of GH-76.)
|
|
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- `Choices` now `__contains__` its Python identifier values. Thanks Keryn
|
2013-08-06 01:49:21 +00:00
|
|
|
Knight. (Merge of GH-69).
|
|
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Fixed a bug causing ``KeyError`` when saving with the parameter
|
2013-08-08 15:45:49 +00:00
|
|
|
``update_fields`` in which there are untracked fields. Thanks Mikhail
|
|
|
|
|
Silonov. (Merge of GH-70, fixes GH-71).
|
2013-08-08 09:18:33 +00:00
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Fixed ``FieldTracker`` usage on inherited models. Fixes GH-57.
|
2013-07-29 19:57:02 +00:00
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Added mutable field support to ``FieldTracker`` (Merge of GH-73, fixes GH-74)
|
2013-08-08 14:02:12 +00:00
|
|
|
|
2013-06-03 20:27:24 +00:00
|
|
|
|
2013-06-03 20:25:29 +00:00
|
|
|
1.4.0 (2013.06.03)
|
|
|
|
|
------------------
|
2013-04-12 03:38:49 +00:00
|
|
|
|
2013-06-03 17:55:38 +00:00
|
|
|
- Introduced ``FieldTracker`` as replacement for ``ModelTracker``, which is now
|
|
|
|
|
deprecated.
|
|
|
|
|
|
2013-05-24 19:24:37 +00:00
|
|
|
- ``PassThroughManager.for_queryset_class()`` no longer ignores superclass
|
2013-05-27 17:10:59 +00:00
|
|
|
``get_query_set``. Thanks Andy Freeland.
|
2013-05-24 19:24:37 +00:00
|
|
|
|
2013-05-23 01:16:40 +00:00
|
|
|
- Fixed ``InheritanceManager`` bug with grandchildren in Django 1.6. Thanks
|
|
|
|
|
CrazyCasta.
|
|
|
|
|
|
2013-05-02 17:33:48 +00:00
|
|
|
- Fixed lack of ``get_FOO_display`` method for ``StatusField``. Fixes GH-41.
|
|
|
|
|
|
2013-04-12 03:38:49 +00:00
|
|
|
|
2013-04-12 03:35:51 +00:00
|
|
|
1.3.1 (2013.04.11)
|
|
|
|
|
------------------
|
2013-03-28 16:50:57 +00:00
|
|
|
|
2013-03-28 16:55:21 +00:00
|
|
|
- Added explicit default to ``BooleanField`` in tests, for Django trunk
|
|
|
|
|
compatibility.
|
2013-04-12 03:35:51 +00:00
|
|
|
|
2013-05-02 17:33:48 +00:00
|
|
|
- Fixed intermittent ``StatusField`` bug. Fixes GH-29.
|
|
|
|
|
|
2013-05-27 17:10:18 +00:00
|
|
|
- Added Python 3 support.
|
2013-05-02 17:33:48 +00:00
|
|
|
|
2013-04-09 22:59:55 +00:00
|
|
|
- Dropped support for Django 1.2 and 1.3. Django 1.4.2+ required.
|
2013-03-28 16:55:21 +00:00
|
|
|
|
|
|
|
|
|
2013-03-28 02:59:19 +00:00
|
|
|
1.3.0 (2013.03.27)
|
|
|
|
|
------------------
|
2011-02-18 22:20:11 +00:00
|
|
|
|
2013-02-21 23:27:21 +00:00
|
|
|
- Allow specifying default value for a ``StatusField``. Thanks Felipe
|
|
|
|
|
Prenholato.
|
|
|
|
|
|
2013-02-12 21:05:31 +00:00
|
|
|
- Fix calling ``create()`` on a ``RelatedManager`` that subclasses a dynamic
|
|
|
|
|
``PassThroughManager``. Thanks SeiryuZ for the report. Fixes GH-24.
|
|
|
|
|
|
2013-02-02 05:53:11 +00:00
|
|
|
- Add workaround for https://code.djangoproject.com/ticket/16855 in
|
|
|
|
|
InheritanceQuerySet to avoid overriding prior calls to
|
|
|
|
|
``select_related()``. Thanks ivirabyan.
|
|
|
|
|
|
2013-02-02 05:38:14 +00:00
|
|
|
- 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).
|
|
|
|
|
|
2013-02-19 18:11:16 +00:00
|
|
|
- Added ``ModelTracker`` for tracking field changes between model saves. Thanks
|
|
|
|
|
Trey Hunner.
|
2013-02-19 04:07:44 +00:00
|
|
|
|
2013-02-02 05:38:14 +00:00
|
|
|
|
2013-01-27 22:54:29 +00:00
|
|
|
1.2.0 (2013.01.27)
|
|
|
|
|
------------------
|
|
|
|
|
|
2013-01-27 19:50:12 +00:00
|
|
|
- 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.
|
|
|
|
|
|
|
|
|
|
.. _BitBucket: https://bitbucket.org/carljm/django-model-utils/overview
|
|
|
|
|
.. _GitHub: https://github.com/carljm/django-model-utils/
|
|
|
|
|
|
2013-01-27 21:30:31 +00:00
|
|
|
- Removed deprecated ``ChoiceEnum``, ``InheritanceCastModel``,
|
|
|
|
|
``InheritanceCastManager``, and ``manager_from``.
|
2013-01-27 21:19:45 +00:00
|
|
|
|
2013-01-27 19:50:12 +00:00
|
|
|
- Fixed pickling of ``PassThroughManager``. Thanks Rinat Shigapov.
|
|
|
|
|
|
|
|
|
|
- Set ``use_for_related_fields = True`` on ``QueryManager``.
|
|
|
|
|
|
|
|
|
|
- Added ``__len__`` method to ``Choices``. Thanks Ryan Kaskel and James Oakley.
|
|
|
|
|
|
2014-02-19 20:55:29 +00:00
|
|
|
- Fixed ``InheritanceQuerySet`` on Django 1.5. Thanks Javier Garcia Sogo.
|
2013-01-27 19:50:12 +00:00
|
|
|
|
2012-04-13 23:33:23 +00:00
|
|
|
1.1.0 (2012.04.13)
|
|
|
|
|
------------------
|
|
|
|
|
|
2012-01-08 00:34:18 +00:00
|
|
|
- Updated AutoCreatedField, AutoLastModifiedField, MonitorField, and
|
|
|
|
|
TimeFramedModel to use ``django.utils.timezone.now`` on Django 1.4.
|
|
|
|
|
Thanks Donald Stufft.
|
|
|
|
|
|
2012-01-03 23:47:33 +00:00
|
|
|
- Fixed annotation of InheritanceQuerysets. Thanks Jeff Elmore and Facundo
|
|
|
|
|
Gaich.
|
2012-01-03 22:47:41 +00:00
|
|
|
|
2012-01-03 22:40:17 +00:00
|
|
|
- Dropped support for Python 2.5 and Django 1.1. Both are no longer supported
|
|
|
|
|
even for security fixes, and should not be used.
|
|
|
|
|
|
2011-12-06 16:39:57 +00:00
|
|
|
- Added ``PassThroughManager.for_queryset_class()``, which fixes use of
|
2011-12-06 00:09:18 +00:00
|
|
|
``PassThroughManager`` with related fields. Thanks Ryan Kaskel for report and
|
|
|
|
|
fix.
|
|
|
|
|
|
2011-10-26 17:12:14 +00:00
|
|
|
- Added ``InheritanceManager.get_subclass()``. Thanks smacker.
|
|
|
|
|
|
2011-06-16 21:22:56 +00:00
|
|
|
1.0.0 (2011.06.16)
|
|
|
|
|
------------------
|
|
|
|
|
|
2011-04-29 01:59:52 +00:00
|
|
|
- Fixed using SplitField on an abstract base model.
|
|
|
|
|
|
2011-06-16 21:22:56 +00:00
|
|
|
- Fixed issue #8, adding ``use_for_related_fields = True`` to
|
|
|
|
|
``InheritanceManager``.
|
|
|
|
|
|
|
|
|
|
- Added ``PassThroughManager``. Thanks Paul McLanahan.
|
|
|
|
|
|
2011-04-16 19:51:14 +00:00
|
|
|
- Added pending-deprecation warnings for ``InheritanceCastModel``,
|
|
|
|
|
``manager_from``, and Django 1.1 support. Removed documentation for the
|
|
|
|
|
deprecated utilities. Bumped ``ChoiceEnum`` from pending-deprecation to
|
|
|
|
|
deprecation.
|
|
|
|
|
|
2011-03-29 16:47:25 +00:00
|
|
|
- Fixed issue #6, bug with InheritanceManager and descriptor fields (e.g.
|
|
|
|
|
FileField). Thanks zyegfryed for the fix and sayane for tests.
|
|
|
|
|
|
2011-06-16 21:22:56 +00:00
|
|
|
0.6.0 (2011.02.18)
|
|
|
|
|
------------------
|
|
|
|
|
|
2011-02-18 21:47:52 +00:00
|
|
|
- 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.
|
2010-01-07 04:48:44 +00:00
|
|
|
|
2010-11-23 17:48:23 +00:00
|
|
|
- added InheritanceManager, a better approach to selecting subclass instances
|
|
|
|
|
for Django 1.2+. Thanks Jeff Elmore.
|
|
|
|
|
|
2010-10-05 12:59:25 +00:00
|
|
|
- added InheritanceCastManager and InheritanceCastQuerySet, to allow bulk
|
2014-02-19 20:55:29 +00:00
|
|
|
casting of a queryset to child types. Thanks Gregor Muellegger.
|
2010-10-05 12:59:25 +00:00
|
|
|
|
2010-09-24 14:33:09 +00:00
|
|
|
0.5.0 (2010.09.24)
|
|
|
|
|
------------------
|
|
|
|
|
|
2010-07-31 02:09:46 +00:00
|
|
|
- added manager_from (thanks George Sakkis)
|
2010-04-16 04:37:12 +00:00
|
|
|
- added StatusField, MonitorField, TimeFramedModel, and StatusModel
|
|
|
|
|
(thanks Jannis Leidel)
|
|
|
|
|
- deprecated ChoiceEnum and replaced with Choices
|
|
|
|
|
|
2010-03-16 21:55:56 +00:00
|
|
|
0.4.0 (2010.03.16)
|
|
|
|
|
------------------
|
|
|
|
|
|
2010-01-15 22:26:59 +00:00
|
|
|
- added SplitField
|
2010-01-14 00:25:16 +00:00
|
|
|
- added ChoiceEnum
|
2010-01-07 04:48:44 +00:00
|
|
|
- added South support for custom model fields
|
|
|
|
|
|
|
|
|
|
0.3.0
|
|
|
|
|
-----
|
|
|
|
|
|
2019-12-09 13:37:16 +00:00
|
|
|
- Added ``QueryManager``
|