summaryrefslogtreecommitdiff
path: root/django/db/models/query_utils.py
AgeCommit message (Collapse)Author
2022-11-09Fixed #28477 -- Stripped unused annotations on aggregation.Simon Charette
Also avoid an unnecessary pushdown when aggregating over a query that doesn't have aggregate annotations.
2022-09-13Fixed #33996 -- Fixed CheckConstraint validation on NULL values.David Sanders
Bug in 667105877e6723c6985399803a364848891513cc. Thanks James Beith for the report.
2022-09-02Fixed #29799 -- Allowed registering lookups per field instances.Allen Jonathan David
Thanks Simon Charette and Mariusz Felisiak for reviews and mentoring this Google Summer of Code 2022 project.
2022-08-30Fixed #21204 -- Tracked field deferrals by field instead of models.Simon Charette
This ensures field deferral works properly when a model is involved more than once in the same query with a distinct deferral mask.
2022-08-30Merged nested if statements in select_related_descend().Simon Charette
2022-07-27Refs #32948 -- Simplified and optimized Q._combine() and __invert__().Nick Pope
- Removed use of Q.deconstruct() in Q._combine(). - Simplified and optimized Q.__invert__() by taking a shallow copy and swapping the negated attribute only. - Simplified construction in Q._combine(). - Simplified conditions in Q._combine() as Q.conditional = True the first isinstance() check is unnecessary. - Removed copy.copy() branch in Q._combine(). Co-authored-by: Keryn Knight <keryn@kerynknight.com>
2022-05-04Refs #30581 -- Added Q.check() hook.Gagaro
2022-05-03Refs #30581 -- Added Q.flatten().Gagaro
2022-04-12Fixed #33626 -- Cleared cache when unregistering a lookup.Himanshu-Balasamanta
2022-03-31Updated select_related_descend() comment.Mariusz Felisiak
Outdated since 0c7633178fa9410f102e4708cef979b873bccb76.
2022-03-04Fixed #29865 -- Added logical XOR support for Q() and querysets.Ryan Heard
2022-02-07Refs #33476 -- Reformatted code with Black.django-bot
2021-04-28Fixed #32632, Fixed #32657 -- Removed flawed support for Subquery ↵Simon Charette
deconstruction. Subquery deconstruction support required implementing complex and expensive equality rules for sql.Query objects for little benefit as the latter cannot themselves be made deconstructible to their reference to model classes. Making Expression @deconstructible and not BaseExpression allows interested parties to conform to the "expression" API even if they are not deconstructible as it's only a requirement for expressions allowed in Model fields and meta options (e.g. constraints, indexes). Thanks Phillip Cutter for the report. This also fixes a performance regression in bbf141bcdc31f1324048af9233583a523ac54c94.
2021-03-17Fixed #32548 -- Fixed crash when combining Q() objects with boolean expressions.Jonathan Richards
2021-02-18Fixed #32455 -- Allowed right combining Q() with boolean expressions.Hasan Ramezani
2021-02-18Fixed #32450 -- Fixed crash when ANDing/ORing an empty Q() with not ↵starryrbs
pickleable Q(). Regression in bb0b6e526340e638522e093765e534df4e4393d2.
2021-01-14Refs #30988 -- Removed InvalidQuery exception per deprecation timeline.Mariusz Felisiak
2020-06-10Fixed #31680 -- Removed unnecessary getattr() call in ↵alosultan
DeferredAttribute.__get__(). refresh_from_db() loads fields values.
2020-01-29Simplified DeferredAttribute.__get__() a bit.Taoup
2019-12-06Fixed #31060 -- Reallowed window expressions to be used in conditions ↵Alex Aktsipetrov
outside of queryset filters. Regression in 4edad1ddf6203326e0be4bdb105beecb0fe454c4. Thanks utapyngo for the report.
2019-11-18Fixed #30988 -- Deprecated the InvalidQuery exception.Simon Charette
It was barely documented without pointers at its defining location and was abused to prevent misuse of the QuerySet field deferring feature.
2019-11-18Replaced QueryWrapper single usage with RawSQL.Simon Charette
2019-10-01Fixed #30651 -- Made __eq__() methods return NotImplemented for not ↵ElizabethU
implemented comparisons. Changed __eq__ to return NotImplemented instead of False if compared to an object of the same type, as is recommended by the Python data model reference. Now these models can be compared to ANY (or other objects with __eq__ overwritten) without returning False automatically.
2019-07-25Refs #30657 -- Made DeferredAttribute.__init__() to take a field instance ↵Jon Dufresne
instead of a field name.
2019-04-03Fixed typo in django/db/models/query_utils.py comment.David Beitey
2018-10-08Replaced kwargs.pop() with keyword-only arguments.Jon Dufresne
2018-09-28Refs #28909 -- Simplifed code using unpacking generalizations.Sergey Fedoseev
2018-02-12Refs #29125 -- Made Q.deconstruct() omit 'query_utils' in the path and ↵Tim Graham
_connector='AND' since it's a default value.
2018-02-12Fixed #29125 -- Made Q.deconstruct() deterministic with multiple keyword ↵Tim Graham
arguments.
2018-01-02Removed DeferredAttribute.__init__()'s unused model argument.Mariusz Felisiak
Unused since a8a81aae20a81e012fddc24f3ede556501af64a2.
2017-12-08Refs #27849 -- Removed empty Q() hack in filtered Aggregate.as_sql().Simon Charette
This required allowing WhereNode to be provided as When(condition). This was made possible by cf12257db23fa248c89a3da3f718aa01a50ca659.
2017-09-22Fixed #27332 -- Added FilteredRelation API for conditional join (ON clause) ↵Nicolas Delaby
support. Thanks Anssi Kääriäinen for contributing to the patch.
2017-07-28Prevented query_utils.refs_expression() from looking for empty string in ↵Sergey Fedoseev
annotations map.
2017-05-25Fixed #28211 -- Prevented ORing an empty Q() from reducing query join ↵Tom
efficiency.
2017-02-28Refs #27656 -- Updated django.db docstring verbs according to PEP 257.Anton Samarchyan
2017-02-23Refs #11964 -- Made Q objects deconstructible.Ian Foote
2017-01-25Refs #23919 -- Replaced super(ClassName, self) with super().chillaranand
2017-01-21Refs #23919 -- Removed misc references to Python 2.Tim Graham
2017-01-19Refs #23919 -- Stopped inheriting from object to define new style classes.Simon Charette
2017-01-18Refs #23919 -- Stopped using django.utils.lru_cache().Aymeric Augustin
2017-01-18Refs #23919 -- Removed encoding preambles and future importsClaude Paroz
2016-09-26Removed obsolete lines in DeferredAttribute.__get__().Tim Graham
Obsolete as of c21e86ab9e3e5ebd6d245d038cb0cb352cd84c3a.
2016-08-11Fixed #26891 -- Fixed lookup registration for ForeignObject.Ryan P Kilby
2016-04-29Fixed #26207 -- Replaced dynamic classes with non-data descriptors for ↵Anssi Kääriäinen
deferred instance loading.
2016-04-25Removed unused Q.clone().Tim Graham
Unused since afe0bb7b13bb8dc4370f32225238012c873b0ee3.
2016-04-22Removed unused BaseExpression.refs_aggregate().Tim Graham
Unused since afe0bb7b13bb8dc4370f32225238012c873b0ee3.
2016-04-13Fixed #26486 -- Fixed a select_related() + defer() MTI edge case.Tim Graham
2016-02-18Fixed #26233 -- Fixed invalid reSt in models.Q docstring.Tim Graham
2015-10-26Fixed #25611 -- Standardized descriptor signatures.Tim Graham
2015-10-19Fixed #25563 -- Cached deferred models in their proxied model's _meta.apps.Simon Charette
Thanks to Andriy Sokolovskiy for the report and Tim Graham for the review.