summaryrefslogtreecommitdiff
path: root/django/db/models/query_utils.py
AgeCommit message (Collapse)Author
2021-02-19[3.2.x] Fixed #32455 -- Allowed right combining Q() with boolean expressions.Hasan Ramezani
Backport of f2bef2b7bc6c817af0f5fa77e1052a1f5ce12f71 from master
2021-02-18[3.2.x] Fixed #32450 -- Fixed crash when ANDing/ORing an empty Q() with not ↵starryrbs
pickleable Q(). Regression in bb0b6e526340e638522e093765e534df4e4393d2. Backport of 466920f6d726eee90d5566e0a9948e92b33a122e from master
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.
2015-10-05Removed obsolete (since Python 2.3) __safe_for_unpickling__ attribute.Tim Graham
2015-09-21Fixed #24629 -- Unified Transform and Expression APIsJosh Smeaton
2015-06-29Fixed #23791 -- Corrected object type check for pk__in=qsAnssi Kääriäinen
When the pk was a relation field, qs.filter(pk__in=qs) didn't work. In addition, fixed Restaurant.objects.filter(place=restaurant_instance), where place is an OneToOneField and the primary key of Restaurant. A big thank you to Josh for review and to Tim for review and cosmetic edits. Thanks to Beauhurst for commissioning the work on this ticket.
2015-06-05Fixed #24924 -- Join promotion for multiple Case expressionsMark Lavin
2015-05-20Fixed #24705 -- Fixed negated Q objects in expressions.Anssi Kääriäinen
Avoided split_exclude() for Q when used as an expression.
2015-05-16Removed redundant list() calls.Tim Graham
2015-05-11Fixed #24766 -- Added join promotion for Case expressionsAnssi Kääriäinen
2015-04-18Removed cases of six.iter* wrapped in a list()Curtis Maloney
There's absolutely no advantage [and a mild performance hit] to using six.iter* in these cases.
2015-03-25Renamed Field.rel attribute to remote_fieldAnssi Kääriäinen
Field.rel is now deprecated. Rel objects have now also remote_field attribute. This means that self == self.remote_field.remote_field. In addition, made the Rel objects a bit more like Field objects. Still, marked ManyToManyFields as null=True.
2015-03-25Refs #24267 -- Implemented lookups for related fieldsAnssi Kääriäinen
Previously related fields didn't implement get_lookup, instead related fields were treated specially. This commit removed some of the special handling. In particular, related fields return Lookup instances now, too. Other notable changes in this commit is removal of support for annotations in names_to_path().
2015-02-06Sorted imports with isort; refs #23860.Tim Graham
2015-02-04Fixed #24268 -- removed Query.havingAnssi Kääriäinen
Instead of splitting filter clauses to where and having parts before adding them to query.where or query.having, add all filter clauses to query.where, and when compiling the query split the where to having and where parts.
2015-01-15Replaced inner functions by class methods.Simon Charette
refs #24031 Thanks to Tim Graham and Michał Modzelewski for the review.
2015-01-12Fixed #24031 -- Added CASE expressions to the ORM.Michał Modzelewski
2015-01-08Fixed #24020 -- Refactored SQL compiler to use expressionsAnssi Kääriäinen
Refactored compiler SELECT, GROUP BY and ORDER BY generation. While there, also refactored select_related() implementation (get_cached_row() and get_klass_info() are now gone!). Made get_db_converters() method work on expressions instead of internal_type. This allows the backend converters to target specific expressions if need be. Added query.context, this can be used to set per-query state. Also changed the signature of database converters. They now accept context as an argument.