- Support Python 3.12. (#106)
- Support Django 5.0 and 5.1. (#106)
- Support Django REST Framework 3.15. (#106)
- Drop support for Django 3.2, 4.0, and 4.1. (#106)
- Drop support for Django REST Framework 3.11, 3.12 and 3.13. (#106)
None
values are now appropriately sorted first or last (depending on database support. Contributed by @vuongdv-spinshell. (#97)
- Initial support for asynchronous queries. (#99, #103)
- Support Python 3.11. (#101)
- Support Django 4.0, 4.1, and 4.2. (#83, #102)
- Support Django REST Framework 3.14. (#101)
- Drop support for Python 3.7. (#102)
- Drop support for Django 2.2 and 3.1. (#98)
- Drop support for Django REST Framework < 3.11. (#98)
- Fix
QuerySetSequence
's support with Django REST Framework'sDjangoFilterBackend
by accepting amodel
parameter. If one is not provided, a dummy model is used to provide a reasonableDoesNotExist
error. Contributed by @j0nm1. (#88)
- Support Python 3.10. (#86)
- Support Django REST Framework 3.13. (#86)
- Drop support for Python 3.6. (3fc1d0f)
- Improve package metadata. (#89)
- Run black, isort, flake8, and pyupgrade. (#90, #91)
- Support the
contains()
method. (#85)
- Support Django 4.0. (#83)
- Drop support for Django 3.0. (#83)
- Changed packaging to use setuptools declarative config in
setup.cfg
. (#84)
- Support the
values()
andvalues_list()
methods. (#73, #74) - Support the
distinct()
method when eachQuerySet
instance is from a unique model. Contributed by @jpic. (#77, #80) - Add Sphinx documentation which is available at Read the Docs.
- Support calling
filter()
withQ()
objects. Contributed by @jpic. (#76)
- Support Python 3.9. (#78)
- Support Django 3.2. (#78, #81)
- Support Django REST Framework 3.12. (#75)
- Drop support for Python 3.5. (#82)
- Add an additional test for the interaction of
order_by()
andonly()
. (#72) - Switch continuous integration to GitHub Actions. (#79)
explain()
now passes through parameters to the underlyingQuerySet
instances. (#69)- Fixes compatibility issue with
ModelChoiceField
. Contributed by @jpic. (#68)
- Do not use
is not
to compare to an integer literal. (#61)
- Support Python 3.8. (#59)
- Support Django 3.0. (#59)
- Support Django REST Framework 3.10 and 3.11. (#59, #64)
- Drop support for Python 2.7. (#59)
- Drop support for Django 2.0 and 2.1. (#59)
- Support Python 3.7. Contributed by @michael-k. (#51)
- Support Django 2.2. Contributed by @michael-k. (#51)
- Support Django REST Framework 3.9. Contributed by @michael-k. (#51)
- Drop support for Python 3.4. Contributed by @michael-k. (#51)
- Drop support for Django REST Framework < 3.6.3. Contributed by @michael-k. (#51)
- Support
first()
,last()
,latest()
, andearliest()
methods. (#40, #49) - Support the
&
and|
operators. (#41) - Support
defer()
andonly()
methods to control which fields are returned. (#44) - Support calling
using()
to switch databases for an entireQuerySetSequence
. (#44) - Support calling
extra()`, ``update()
, andannotate()
which get applied to eachQuerySet
. (#46, #47) - Support calling
explain()
on Django >= 2.1. (#48)
- Raise
NotImplementedError
on unimplemented methods. This fixes a regression introduced in 0.9. (#42) - Expand tests for empty
QuerySet
instances. (#43)
- Stop using the internals of QuerySet for better forward compatibility. This change
means that
QuerySetSequence
is no longer a sub-class ofQuerySet
and should improve interactions with other packages which modifyQuerySet
. (#38)
- Support Django 2.0 and 2.1. Contributed by @michael-k. (#35, #39)
- Support Django REST Framework 3.7 and 3.8. (#33, #39)
- Drop support for Django < 1.11. (#36)
- Drop support for Django REST Framework < 3.4. (#36)
- Optimize iteration when not slicing a
QuerySetSequence
. Contributed by @EvgeneOskin. (#29)
- Support Django 1.11. Contributed by @michael-k. (#26, #32)
- Support Django REST Framework 3.5 and 3.6. (#26)
- Calling an unimplemented method with parameters on
QuerySetSequence
raised a non-sensical error. (#28)
- Slicing a
QuerySetSequence
did not work properly when the slice reduced theQuerySetSequence
to a singleQuerySet
. (#23, #24) - Typo fixes. (#19)
- Support Django REST Framework 3.5. (#20)
- Allow filtering / querying / ordering by the order of the
QuerySets
in theQuerySetSequence
by using'#'
. This allows for additional optimizations when using third-party applications, e.g. Django REST Framework. (#10, #14, #15, #16) - Django REST Framework integration: includes a subclass of the
CursorPagination
from Django REST Framework underqueryset_sequence.pagination.SequenceCursorPagination
which is designed to work efficiently with aQuerySetSequence
by first ordering by internalQuerySet
, then by theordering
attribute. (#17)
PartialInheritanceMeta
must be providedINHERITED_ATTRS
andNOT_IMPLEMENTED_ATTRS
. (#12)
- Move
queryset_sequence
to an actual module in order to hide some implementation details. (#11)
- Support Django 1.10. (#9)
- Allow specifying the
Model
to use when instantiating aQuerySetSequence
. This is required for compatibility with some third-party applications that check themodel
field for equality, e.g. when using theDjangoFilterBackend
with Django REST Framework. Contributed by @CountZachula. (#6) - Support
prefetch_related
. (#7)
- Fixes an issue when using Django Debug Toolbar. (#8)
- Significant performance improvements when ordering the
QuerySetSequence
. (#5) - Support
delete()
to remove items. (1bb1716)
- Raises
NotImplementedError
forQuerySet
methods thatQuerySetSequence
does not implement. (e2c67c5, b376b87) - Support
reverse()
to reverse the item ordering. (f27b2c7) - Support
none()
to return anEmptyQuerySet
. (6171c11) - Support
exists()
to check if aQuerySetSequence
has any results. (1aa705b) - Support
select_related
to follow foreign-key relationships when generating results. (ad54d5e)
- Do not evaluate any
QuerySets
when callingfilter()
orexclude()
like a DjangoQuerySet
. Contributed by @jpic. (#1, baaf448) - Do not cache the results when calling
iterator()
. (6566a91)
- Support
order_by()
that references a related model (e.g. aForeignKey
relationship usingfoo
orfoo_id
syntaxes). (94274d6) - Support
order_by()
that references a field on a related model (e.g.foo__bar
) (a97d940)
- Support Django 1.9.1. (9497e09)
- Fixed calling
order_by()
with a single field. (5c8521c)
- Support the
get()
method onQuerySetSequence
. (957a650)
- Fixed a bug when there's no data to iterate. (02aafac)
- Do not try to instantiate
EmptyQuerySet
. (99dba06)
- Fixed packaging. (9b1ae74)
- Support Django 1.8.0.
- Various bug fixes and tests.
The initial commits on based on DjangoSnippets and other code:
DjangoSnippet 1103 by mattdw. foo_7a081bfcfc0eff2aba4d550632d9733786c65ac8
-
foo_8d989bcc36140573a0f4d5f1e0e1e99e9a90a9f4
- Updated per comment 1553 by nosa_manuel. foo_ff258ca20f2a5c8e536a744fb9b64fba87046ef5
- Updated per comment 4642 by esquevin. foo_04b5fe14a5e8803c2b11259ff60c095fb9da8ce3
DjangoSnippet 1933 by t_rybik. foo_93f5575b3661bd2334960767eadf4a1ba03bfb8f
django-ko-demo from The Atlantic by @fdintino. foo_0b875aeb8aaea20ba47fc2fbc285d078aee42240