Ian Foote
c226c6cb32
Fixed #20581 -- Added support for deferrable unique constraints.
2020-04-30 10:43:50 +02:00
François Freitag
abea86f9e4
Removed unnecessary tuple wrapping of single format string argument.
2020-04-27 08:30:16 +02:00
Tim Schilling
a92cc84b4a
Refs #31369 -- Deprecated models.NullBooleanField in favor of BooleanField(null=True).
2020-04-24 10:10:45 +02:00
Hannes Ljungberg
447980e72a
Fixed #31500 -- Fixed detecting of unique fields in QuerySet.in_bulk() when using Meta.constraints.
...
Detection of unique fields now takes into account non-partial unique
constraints.
2020-04-23 08:07:08 +02:00
Adam Johnson
67f9d076cf
Avoided unnecessary recompilation of ordering clause regex in SQLCompiler.
2020-04-22 20:28:01 +02:00
Hasan Ramezani
35a67b3731
Fixed #31474 -- Made QuerySet.delete() not return the number of deleted objects if it's zero.
2020-04-20 09:51:54 +02:00
sobolevn
578c03b276
Fixed #31223 -- Added __class_getitem__() to Manager and QuerySet.
2020-04-15 11:26:11 +02:00
Ichlasul Affan
53d229ff63
Fixed #31351 -- Added system checks for partial indexes and unique constraints support.
2020-04-10 12:00:27 +02:00
miigotu
210657b791
Fixed #28184 -- Allowed using a callable for FileField and ImageField storage.
2020-04-08 11:26:17 +02:00
Simon Charette
1d16c5d562
Refs #27666 -- Ensured relationship consistency on delayed reloads.
...
Delayed reloads of state models broke identity based relationships
between direct and non-direct ancestors.
Basing models.Options related objects map of model labels instead of
their identity ensured relationship consistency is maintained.
Refs #30966 .
Co-authored-by: Hasan Ramezani <hasan.r67@gmail.com>
2020-04-07 09:20:46 +02:00
Simon Charette
513948735b
Fixed #31426 -- Added proper field validation to QuerySet.order_by().
...
Resolve the field reference instead of using fragile regex based string
reference validation.
2020-04-06 10:19:49 +02:00
Simon Charette
98ea4f0f46
Refs #7098 -- Deprecated passing raw column aliases to order_by().
...
Now that order_by() has expression support passing RawSQL() can achieve
the same result.
This was also already supported through QuerySet.extra(order_by) for
years but this API is more or less deprecated at this point.
2020-04-06 10:01:02 +02:00
Hasan Ramezani
4237050684
Fixed #31420 -- Fixed crash when filtering subquery annotation against a SimpleLazyObject.
...
Thanks Simon Charette for the solution and analysis.
2020-04-06 07:11:29 +02:00
Hasan Ramezani
6fbce45b03
Fixed #31415 -- Fixed crash when nested OuterRef is used with operators or in database functions.
2020-04-04 20:16:00 +02:00
Mariusz Felisiak
5c24c16e68
Refs #12990 -- Moved PostgresSimpleLookup to the django.db.models.lookups.PostgresOperatorLookup.
2020-04-01 10:55:53 +02:00
Adam Johnson
c06d7c9239
Refs #31403 -- Made SQLInsertCompiler.execute_sql() always return an iterable of rows.
...
List of tuples.
2020-03-31 07:12:11 +02:00
Adam Johnson
9e1b6b8a66
Fixed #23916 -- Allowed makemigrations to handle related model name case changes.
...
Made autodetector ignore related model name case changes so unnecessary
migrations are not created.
2020-03-25 10:39:34 +01:00
Hannes Ljungberg
f3da09df0f
Fixed #31396 -- Added binary XOR operator to F expressions.
2020-03-25 10:16:30 +01:00
Hasan Ramezani
10866a10fe
Fixed #31377 -- Disabled grouping by aliases on QuerySet.values()/values_list() when they collide with field names.
...
Regression in fb3f034f1c
.
Thanks Holovashchenko Vadym for the report.
2020-03-25 09:13:46 +01:00
Hasan Ramezani
53b6a466d8
Refs #29724 -- Added is_dst parameter to QuerySet.datetimes().
...
Thanks Simon Charette for the review and Mariusz Felisiak for tests.
2020-03-20 12:55:33 +01:00
Jon Dufresne
013147fae2
Fixed #31285 -- Fixed inherited Meta.ordering of "-pk".
2020-03-19 12:57:07 +01:00
Mariusz Felisiak
5c8441a0b8
Refs #31055 -- Made long column names checks support databases aware.
2020-03-18 18:41:40 +01:00
Simon Charette
9f07f27124
Fixed #31376 -- Optimized nulls ordering when possible on SQLite and MySQL.
...
Both backends order NULLs first on ascending ordering and last on
descending ordering which makes ORDER BY IS (NOT)? NULL wasteful when
asc(nulls_first) and desc(nulls_last) are used since it prevents indice
usage.
2020-03-18 06:43:49 +01:00
Abhijeet Viswa
babd412685
Fixed #29129 -- Skipped UPDATE when adding a model instance with inherited primary key that has a default.
2020-03-05 12:08:38 +01:00
Jon Dufresne
769cee5252
Fixed #31327 -- Deprecated providing_args argument for Signal.
2020-03-05 09:38:52 +01:00
Mariusz Felisiak
7b8fa1653f
Fixed #31150 -- Included subqueries that reference related fields in GROUP BY clauses.
...
Thanks Johannes Hoppe for the report.
Regression in fb3f034f1c
.
Co-authored-by: Simon Charette <charette.s@gmail.com>
2020-03-03 11:25:37 +01:00
Matheus Cunha Motta
e908eb6287
Fixed #31310 -- Fixed hints in checks for using intermediate model with ambiguous foreign key.
...
symmetrical=False is not required since
87b1ad6e73
.
2020-02-28 08:38:57 +01:00
Rohit
486786c4c4
Fixed #31251 -- Disabled grouping by OuterRef() annotation.
2020-02-27 13:02:49 +01:00
Valze
5bf28ac2ed
Fixed #31185 -- Fixed detecting of unique fields in ForeignKey/ForeignObject checks when using Meta.constraints.
2020-02-27 10:53:29 +01:00
Taoup
271fdab8b7
Fixed #31286 -- Made database specific fields checks databases aware.
...
Follow up to 0b83c8cc4d
.
2020-02-24 14:23:46 +01:00
Mariusz Felisiak
d270c10a72
Refs #31187 -- Added total_unique_constraints property to model's Options.
2020-02-19 09:36:19 +01:00
Carlton Gibson
a34cb5a6d4
Refs #31282 -- Clarified M2O add/remove/set with PK behaviour.
...
Improved error message for remove() and added tests.
2020-02-18 19:54:29 +01:00
Xavier Francisco
8690878507
Fixed #31277 -- Relaxed system check of m2m intermediary tables for db_table collision when database routers are installed.
...
Turned the error into a warning when database routers are installed.
2020-02-17 13:53:45 +01:00
Abhijeet Viswa
1712a76b9d
Fixed #31246 -- Fixed locking models in QuerySet.select_for_update(of=()) for related fields and parent link fields with multi-table inheritance.
...
Partly regression in 0107e3d105
.
2020-02-11 20:43:57 +01:00
Simon Charette
71756bdfed
Fixed #31055 -- Made constraint checks support databases aware.
2020-02-07 11:03:53 +01:00
Jon Dufresne
3259983f56
Fixed #31233 -- Closed database connections and cursors after use.
2020-02-06 15:35:23 +01:00
Hasan Ramezani
da79ee472d
Fixed #26813 -- Prevented empty choice in ModelChoiceField with RadioSelect for fields with blank=False.
2020-02-05 10:27:01 +01:00
Nick Pope
335c9c94ac
Simplified imports from django.db and django.contrib.gis.db.
2020-02-04 13:20:06 +01:00
Mariusz Felisiak
6b178a3e93
Fixed #31217 -- Made QuerySet.values()/values_list() group by not selected annotations with aggregations used in order_by().
...
Regression in 59b4e99dd0
.
Thanks Jon Dufresne for the report and Simon Charette for the review.
2020-02-03 07:48:11 +01:00
Adam Johnson
c1b24718e0
Cached ForeignObject.(local/foreign/reverse)_related_fields properties.
2020-01-31 14:07:52 +01:00
Hasan Ramezani
a97111eabf
Fixed 31207 -- Prevented references to non-local remote fields in ForeignKey.to_field.
...
Thanks Simon Charette for the initial patch and review.
2020-01-31 10:19:12 +01:00
Matthias Kestenholz
4e8d89020c
Fixed #31219 -- Fixed object deletion crash for nested protected related objects.
2020-01-31 09:07:58 +01:00
Taoup
efc1c73bf5
Simplified DeferredAttribute.__get__() a bit.
2020-01-29 16:06:56 +01:00
Mariusz Felisiak
b7a3a6c9ef
Used model's Options.label/label_lower where applicable.
2020-01-29 12:09:20 +01:00
Hasan Ramezani
4ca5c565f4
Refs #27852 -- Fixed object deletion to show all restricted related objects rather than just the first one.
2020-01-29 09:02:23 +01:00
Mariusz Felisiak
2a6fc89018
Refs #27852 -- Renamed a loop variable in Collector.collect() to avoid redefinition.
2020-01-29 09:02:23 +01:00
Hasan Ramezani
ab3cbd8b9a
Refs #27852 -- Fixed object deletion to show all protected related objects rather than just the first one.
...
Thanks Anton Samarchyan for the initial patch.
2020-01-27 12:21:02 +01:00
Jon Dufresne
26be703fe6
Changed re-raising an exception to use bare raise syntax where appropriate.
2020-01-20 11:44:28 +01:00
Adam Johnson
1e0dcd6c8b
Used constant instead of hard-coded value for recursive relationship.
2020-01-16 08:34:58 +01:00
Mariusz Felisiak
bf77669453
Fixed #29998 -- Allowed multiple OneToOneFields to the parent model.
...
We assumed that any OneToOneField's in a child model must be the
parent link and raised an error when parent_link=True was not
specified. This patch allows to specify multiple OneToOneField's to
the parent model.
OneToOneField's without a custom related_name will raise fields.E304
and fields.E305 so this should warn users when they try to override
the auto-created OneToOneField.
2020-01-16 08:06:16 +01:00
Carlton Gibson
29c126bb34
Fixed #31124 -- Fixed setting of get_FOO_display() when overriding inherited choices.
...
Regression in 2d38eb0ab9
2020-01-15 15:35:22 +01:00
Mariusz Felisiak
59b4e99dd0
Refs #31136 -- Made QuerySet.values()/values_list() group only by selected annotation.
...
Regression in 0f843fdd5b
.
2020-01-15 09:32:42 +01:00
chetan22
63e6ee1f99
Fixed #29871 -- Allowed setting pk=None on a child model to create a copy.
...
Thanks Simon Charette and Tim Graham for the initial patch.
2020-01-15 08:28:30 +01:00
Mariusz Felisiak
6f7998adc7
Fixed #31155 -- Fixed a system check for the longest choice when a named group contains only non-string values.
...
Regression in b6251956b6
.
Thanks Murat Guchetl for the report.
2020-01-11 19:47:36 +01:00
Adam Johnson
5166097d7c
Fixed #31154 -- Added support for using enumeration types in templates.
...
Enumeration helpers are callables, so the template system tried to call
them with no arguments.
Thanks Rupert Baker for helping discover this.
2020-01-10 07:52:06 +01:00
Hasan Ramezani
eef3ea847e
Fixed #31148 -- Added error messages on update()/delete() operations following union(), intersection(), and difference().
2020-01-09 12:20:54 +01:00
Hasan Ramezani
f600e3fad6
Fixed #21238 -- Fixed restoring attributes when pickling FileField and ImageField.
2020-01-09 09:37:59 +01:00
Taoup
979f61abd3
Simplified model's Options.add_field() a bit.
2020-01-07 11:58:06 +01:00
Mariusz Felisiak
0f843fdd5b
Fixed #31136 -- Disabled grouping by aliases on QuerySet.values()/values_list().
...
Regression in fb3f034f1c
.
Thanks Sigurd Ljødal for the report.
2020-01-04 20:49:11 +01:00
Simon Charette
5779cc938a
Fixed #31071 -- Disabled insert optimization for primary keys with defaults when loading fixtures.
...
Model.save_base() is called directly when loading fixtures and assumes
existing rows will be updated. Branching of "raw" allows to maintain
the optimization introduced in #29260 while supporting this edge case.
Regression in 85458e94e3
.
Thanks Reupen Shah for the report.
2019-12-30 07:49:10 +01:00
Simon Charette
720de4d044
Fixed #31109 -- Disabled grouping by aliases on QuerySet.exists().
...
Clearing the SELECT clause in Query.has_results was orphaning GROUP BY
references to it.
Thanks Thierry Bastian for the report and Baptiste Mispelon for the
bisect.
Regression in fb3f034f1c
.
2019-12-23 09:24:03 +01:00
Hasan Ramezani
a3fc24f014
Fixed #31095 -- Made RelatedManager.set() preserve existing m2m relations with an invalid type.
2019-12-19 13:33:05 +01:00
Simon Charette
5a4d7285bd
Fixed #31094 -- Included columns referenced by subqueries in GROUP BY on aggregations.
...
Thanks Johannes Hoppe for the report.
Regression in fb3f034f1c
.
Co-authored-by: Mariusz Felisiak <felisiak.mariusz@gmail.com>
2019-12-19 10:04:56 +01:00
Ram Rachum
972d93a95e
Optimized containment check in ChoicesMeta.
2019-12-16 11:22:45 +01:00
Baptiste Mispelon
09341856ed
Used Signature API instead of deprecated inspect.getcallargs().
...
inspect.getcallargs() was deprecated in Python 3.5 and the Signature
API (PEP 362) has better support for decorated functions (by default,
it follows the __wrapped__ attribute set by functools.wraps for
example).
2019-12-10 09:36:34 +01:00
Mariusz Felisiak
d6505273cd
Refs #31044 -- Fixed error message when using Prefetch with a values_list() queryset.
2019-12-09 15:45:53 +01:00
Hasan Ramezani
4540842bc3
Fixed #31044 -- Errored nicely when using Prefetch with a raw() queryset.
2019-12-09 15:45:18 +01:00
Alex Aktsipetrov
723fc7fcf6
Made Query.check_filterable() use bool by default instead of str.
2019-12-06 13:52:36 +01:00
Alex Aktsipetrov
bf12273db4
Fixed #31060 -- Reallowed window expressions to be used in conditions outside of queryset filters.
...
Regression in 4edad1ddf6
.
Thanks utapyngo for the report.
2019-12-06 13:52:16 +01:00
Baptiste Mispelon
26cab4e8c1
Fixed #31046 -- Allowed RelatedManager.add()/create()/set() to accept callable values in through_defaults.
2019-12-03 19:47:38 +01:00
Baptiste Mispelon
c50839fccf
Simplified RelatedManager._add_items() a bit.
...
Added early return in RelatedManager._add_items() to decrease an
indentation level.
2019-12-03 19:47:32 +01:00
Baptiste Mispelon
6c0341f127
Refs #31046 -- Added django.db.models.utils.resolve_callables().
2019-12-03 19:47:32 +01:00
Mariusz Felisiak
0107e3d105
Fixed #30953 -- Made select_for_update() lock queryset's model when using "self" with multi-table inheritance.
...
Thanks Abhijeet Viswa for the report and initial patch.
2019-12-02 07:57:19 +01:00
Simon Charette
379bf1a2d4
Fixed #8467 -- Prevented crash when adding existent m2m relation with an invalid type.
...
This was an issue anymore on backends that allows conflicts to be
ignored (Refs #19544 ) as long the provided values were coercible to the
expected type. However on the remaining backends that don't support
this feature, namely Oracle, this could still result in an
IntegrityError.
By attempting to coerce the provided values to the expected types in
Python beforehand we allow the existing value set intersection in
ManyRelatedManager._get_missing_target_ids to prevent the problematic
insertion attempts.
Thanks Baptiste Mispelon for triaging this old ticket against the
current state of the master branch.
2019-11-22 09:08:10 +01:00
Simon Charette
f97a6123c0
Refs #25367 -- Made Query.build_filter() raise TypeError on non-conditional expressions.
2019-11-21 11:56:35 +01:00
Simon Charette
e9a0e1d4f6
Fixed #30484 -- Added conditional expressions support to CheckConstraint.
2019-11-21 11:56:35 +01:00
Simon Charette
37e6c5b79b
Refs #25367 -- Moved conditional expression wrapping to the Exact lookup.
2019-11-21 11:56:35 +01:00
Simon Charette
306b687520
Refs #11964 -- Removed SimpleCol in favor of Query(alias_cols).
...
This prevent having to pass simple_col through multiple function calls
by defining whether or not references should be resolved with aliases
at the Query level.
2019-11-21 11:56:35 +01:00
Daniel Izquierdo
89abecc75d
Fixed #27272 -- Added an on_delete RESTRICT handler to allow cascading deletions while protecting direct ones.
2019-11-19 10:55:05 +01:00
Daniel Izquierdo
4e1d809aa5
Refs #27272 -- Added Collector.add_dependency().
2019-11-19 10:49:47 +01:00
Caio Ariede
555bebe774
Fixed #30987 -- Added models.PositiveBigIntegerField.
2019-11-19 09:34:11 +01:00
Simon Charette
11e327a3ff
Fixed #30988 -- Deprecated the InvalidQuery exception.
...
It was barely documented without pointers at its defining location and
was abused to prevent misuse of the QuerySet field deferring feature.
2019-11-18 14:06:51 +01:00
Simon Charette
3ca77e2b84
Replaced QueryWrapper single usage with RawSQL.
2019-11-18 10:45:24 +01:00
George Marshall
8be79984dc
Fixed #30971 -- Prevented Query.resolve_lookup_value() from coercing list values to tuples.
...
Regression in 8a281aa7fe
.
2019-11-13 08:27:26 +01:00
Hasan Ramezani
153c7956f8
Fixed #24858 -- Added support for get_FOO_display() to ArrayField and RangeFields.
...
_get_FIELD_display() crashed when Field.choices was unhashable.
2019-11-08 10:59:24 +01:00
Hasan Ramezani
dc60597eb6
Refs #30095 -- Added Field._choices_is_value().
...
This allows fields classes to override the validation of choices'
values.
2019-11-05 11:48:44 +01:00
Nick Pope
7286eaf681
Refs #13312 -- Simplified handling of nulls ordering on MySQL.
...
MySQL & MariaDB support the standard IS NULL and IS NOT NULL so
the same workaround used for NULLS FIRST and NULLS LAST that is
used for SQLite < 3.30.0 can be used.
Thanks Simon Charette for the discussion.
2019-11-04 14:47:58 +01:00
Carlton Gibson
2d38eb0ab9
Fixed #30931 -- Restored ability to override Model.get_FIELD_display().
...
Thanks Sergey Fedoseev for the implementation idea.
Regression in a68ea23101
.
2019-11-04 07:55:34 +01:00
Simon Charette
a699595fce
Refs #13312 -- Removed unnecessary IF wrapping in nulls_last handling on MySQL.
...
ISNULL function already returns 0 and 1 on MySQL.
2019-10-31 20:17:04 +01:00
Mariusz Felisiak
a9bd01d363
Refs #30095 -- Simplified Field._check_choices() a bit.
...
Using an internal is_value() hook to check whether Field.choices
is iterable is misleading.
2019-10-31 20:04:47 +01:00
Hasan Ramezani
e3d0b4d550
Fixed #30899 -- Lazily compiled import time regular expressions.
2019-10-29 09:22:26 +01:00
Carlton Gibson
dbcd7b064e
Fixed #30902 -- Added __str__() for model choice enums.
...
Allows expected behavior when cast to str, also matching behaviour of
created instances with those fetched from the DB.
Thanks to Simon Charette, Nick Pope, and Shai Berger for reviews.
2019-10-25 09:19:56 +02:00
Simon Charette
7acef095d7
Fixed #23576 -- Implemented multi-alias fast-path deletion in MySQL backend.
...
This required moving the entirety of DELETE SQL generation to the
compiler where it should have been in the first place and implementing
a specialized compiler on MySQL/MariaDB.
The MySQL compiler relies on the "DELETE table FROM table JOIN" syntax
for queries spanning over multiple tables.
2019-10-24 12:24:53 +02:00
Dan Moore
bc94e3c1a2
Fixed #29919 -- Fixed RelatedOnlyFieldListFilter crash with reverse relationships.
2019-10-23 10:50:31 +02:00
Alex Aktsipetrov
681f7e2b13
Fixed #20577 -- Deferred filtering of prefetched related querysets.
...
Added internal interface to QuerySet that allows to defer next filter
call till .query is accessed. Used it to optimize prefetch_related().
Thanks Simon Charette for the review.
2019-10-21 13:21:54 +02:00
Alex Aktsipetrov
70d8146986
Adjusted QuerySet._filter_or_exclude() call to use negated=False, rather than None.
...
None was a remnant from the times _filter_or_exclude accepted
qtype/mapper as the first arg.
2019-10-21 12:45:17 +02:00
Ahmet Kucuk
09578f6dfb
Fixed #30827 -- Made batch_size arg of QuerySet.bulk_create() respect DatabaseOperations.bulk_batch_size().
...
Thanks Chetan Khanna for tests.
2019-10-21 11:46:44 +02:00
André Ericson
31174031f1
Fixed #30841 -- Deprecated using non-boolean values for isnull lookup.
2019-10-21 08:44:20 +02:00
sage
6f82df69ef
Refs #12990 -- Moved CheckFieldDefaultMixin to the django.db.models.fields.mixins.
2019-10-17 12:30:29 +02:00
Hasan Ramezani
6a75cea76a
Fixed #30854 -- Fixed QuerySet.select_related() with multiple FilteredRelations.
2019-10-11 08:10:48 +02:00
Hasan Ramezani
e1ae2b0050
Refs #30854 -- Moved local_setter() outside the loop in SQLCompiler.get_related_selections().
2019-10-11 08:07:07 +02:00
Simon Charette
8b10357854
Fixed #30860 -- Disabled unneeded NULLS FIRST/LAST workaround on SQLite 3.30+.
2019-10-09 10:47:49 +02:00
Simon Charette
26c66f4519
Fixed #30856 -- Combined fast-delete queries by model during cascade deletion.
...
Reduced the number of queries required when performing cascade deletion
for a model referenced multiple time by another one by performing an
union of reference lookups.
2019-10-09 09:49:53 +02:00
Simon Charette
44522d1036
Made Collector.collect() return immediately for disabled related collection.
2019-10-09 09:49:53 +02:00
Simon Charette
832aa08afe
Used defaultdict in deletion.Collector.
2019-10-09 09:49:27 +02:00
Mariusz Felisiak
02ba48bc23
Removed redundant names in django.db.models.functions.__all__.
2019-10-02 13:07:14 +02:00
Anatol Ulrich
8ed6788aa4
Fixed #30821 -- Added ExtractIsoWeekYear database function and iso_week_day lookup.
2019-10-02 10:41:34 +02:00
ElizabethU
54ea290e5b
Fixed #30651 -- Made __eq__() methods return NotImplemented for not 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-10-01 17:58:19 +02:00
Hasan Ramezani
95a11578ce
Fixed #30798 -- Fixed Meta.ordering validation for pk of related fields.
...
Regression in 440505cb2c
.
2019-09-27 14:22:31 +02:00
Hasan Ramezani
c7944628a1
Refs #30798 -- Prevented chaining fields from the same related model multiple times in model Meta.ordering.
2019-09-27 13:57:22 +02:00
Mads Jensen
129583a0d3
Removed some outdated backwards compatibility imports and misleading comments.
...
EmptyResultSet moved in 46509cf13d
.
FieldDoesNotExist moved in 8958170755
.
BoundField and pretty_name moved in 8550161e53
.
EMPTY_VALUES moved in 471596fc1a
.
BaseRunserverCommand moved in 5c53e30607
.
2019-09-24 15:18:53 +02:00
Mariusz Felisiak
01104368ff
Refs #29444 -- Removed redundant DatabaseFeatures.can_return_multiple_columns_from_insert.
...
Unnecessary since b31e63879e
.
2019-09-24 10:37:22 +02:00
Johannes Hoppe
b31e63879e
Fixed #29444 -- Allowed returning multiple fields from INSERT statements on Oracle.
2019-09-24 10:22:43 +02:00
Simon Charette
37f8f29377
Fixed #30796 -- Prevented select_related() from mutating a queryset on chaining.
...
Thanks Darren Maki for the report.
2019-09-24 09:17:45 +02:00
Hasan Ramezani
f97bbad908
Fixed #13296 -- Fixed ordering by Options.order_with_respect_to after deleting objects.
...
Thanks Simon Meers for the original patch.
2019-09-23 11:20:37 +02:00
Ian Foote
d9881a025c
Fixed #29915 -- Added support for values with hyphens to pattern lookups for UUIDField on backends without UUID datatype.
...
Support hyphens in iexact, contains, icontains, startswith, istartswith,
endswith and iendswith UUIDField filters on backends without UUID
datatype.
2019-09-23 08:24:08 +02:00
James Timmins
0719edcd5f
Fixed #30771 -- Fixed exact lookup against queries with selected columns.
...
Use pre-existing select fields (and thereby GROUP BY fields) from
subquery if they were specified, instead of always defaulting to pk.
Thanks Aur Saraf for the report and Simon Charette for guidance.
2019-09-20 10:42:14 +02:00
Mariusz Felisiak
0ddb4ebf7b
Refs #14357 -- Made Meta.ordering not affect GROUP BY queries.
...
Per deprecation timeline.
2019-09-10 12:01:00 +02:00
Simon Charette
34decdebf1
Fixed #30754 -- Prevented inclusion of aliases in partial index conditions.
...
SQLite doesn't repoint table aliases in partial index conditions on table
rename which breaks the documented table alteration procedure.
Thanks Pēteris Caune for the report.
2019-09-10 10:03:16 +02:00
Vojtech Bocek
b1d37fea8f
Fixed #28107 -- Added DatabaseFeatures.allows_group_by_selected_pks_on_model() to allow enabling optimization for unmanaged models.
2019-09-09 14:04:46 +02:00
Johannes Hoppe
7254f1138d
Refs #29444 -- Allowed returning multiple fields from INSERT statements on PostgreSQL.
...
Thanks Florian Apolloner, Tim Graham, Simon Charette, Nick Pope, and
Mariusz Felisiak for reviews.
2019-09-09 10:51:14 +02:00
Nick Pope
b6251956b6
Fixed #30757 -- Added a system check to ensure max_length fits the longest choice.
2019-09-09 10:28:18 +02:00
Shai Berger
72ebe85a26
Fixed #27910 -- Added enumeration helpers for use in Field.choices.
...
These classes can serve as a base class for user enums, supporting
translatable human-readable names, or names automatically inferred
from the enum member name.
Additional properties make it easy to access the list of names, values
and display labels.
Thanks to the following for ideas and reviews:
Carlton Gibson, Fran Hrženjak, Ian Foote, Mariusz Felisiak, Shai Berger.
Co-authored-by: Shai Berger <shai@platonix.com>
Co-authored-by: Nick Pope <nick.pope@flightdataservices.com>
Co-authored-by: Mariusz Felisiak <felisiak.mariusz@gmail.com>
2019-09-04 14:42:49 +02:00
Simon Charette
13a8884a08
Fixed #30739 -- Fixed exclusion of multi-valued lookup against outer rhs.
...
OuterRef right hand sides have to be nested, just like F rhs have to,
during the subquery pushdown split_exclude performs to ensure they are
resolved against the outer query aliases.
2019-09-02 10:52:36 +02:00
Simon Charette
600628f8f0
Refs #28442 -- Adjusted related lookups handling of expression rhs.
...
Expressions should never be prepared as other Lookup.get_prep_lookup
implementations hint at by returning early on the presence of the
resolve_expression attribute.
The previous solution was only handling lookups against related fields
pointing at AutoFields and would break for foreign keys to other fields.
It was also causing bidirectional coupling between model fields and
expressions which the method level import of OuterRef was a symptom of.
2019-09-02 10:52:36 +02:00
Mariusz Felisiak
d275fd04f3
Refs #25367 -- Simplified OrderBy and Lookup by using Case() instead of RawSQL() on Oracle.
...
Follow up to efa1908f66
.
2019-08-29 11:56:12 +02:00
Matthew Schinckel
4137fc2efc
Fixed #25367 -- Allowed boolean expressions in QuerySet.filter() and exclude().
...
This allows using expressions that have an output_field that is a
BooleanField to be used directly in a queryset filters, or in the
When() clauses of a Case() expression.
Thanks Josh Smeaton, Tim Graham, Simon Charette, Mariusz Felisiak, and
Adam Johnson for reviews.
Co-Authored-By: NyanKiyoshi <hello@vanille.bid>
2019-08-29 09:45:29 +02:00
Andrew Brown
691def10a0
Fixed #30727 -- Made Subquery pickle without evaluating their QuerySet.
...
Subquery expression objects, when pickled, were evaluating the QuerySet
objects saved in its _constructor_args attribute.
2019-08-27 13:05:20 +02:00
Mads Jensen
85ac838d9e
Fixed #21039 -- Added AddIndexConcurrently/RemoveIndexConcurrently operations for PostgreSQL.
...
Thanks to Simon Charettes for review.
Co-Authored-By: Daniel Tao <daniel.tao@gmail.com>
2019-08-21 13:10:06 +02:00
Nick Pope
21e559495b
Fixed #29979 , Refs #17337 -- Extracted AutoField field logic into a mixin and refactored AutoFields.
...
This reduces duplication by allowing AutoField, BigAutoField and
SmallAutoField to inherit from IntegerField, BigIntegerField and
SmallIntegerField respectively. Doing so also allows for enabling the
max_length warning check and minimum/maximum value validation for auto
fields, as well as providing a mixin that can be used for other possible
future auto field types such as a theoretical UUIDAutoField.
2019-08-20 09:22:25 +02:00
Hasan Ramezani
85458e94e3
Fixed #29260 -- Skipped an UPDATE when adding a model instance with primary key that has a default.
2019-08-19 13:28:35 +02:00
Claude Paroz
d1c2e6dd04
Refs #28428 -- Made FileField.upload_to support pathlib.Path.
2019-08-18 20:34:58 +02:00
Simon Charette
8b4a43dda7
Fixed #29545 -- Fixed using filter lookups againts nested subquery expressions.
...
Made sql.Where resolve lhs of its child nodes. This is necessary to
allow filter lookups against nested subquery expressions to properly
resolve their OuterRefs to Cols.
Thanks Oskar Persson for the simplified test case.
2019-08-17 11:24:35 +02:00
Andrew Brown
8a281aa7fe
Fixed #30687 -- Fixed using of OuterRef() expressions in distance lookups.
2019-08-16 06:50:33 +02:00
zeyneloz
00035672a4
Fixed #30449 -- Fixed RelatedFieldListFilter/RelatedOnlyFieldListFilter to respect model's Meta.ordering.
...
Regression in 6d4e5feb79
.
Co-Authored-By: Mariusz Felisiak <felisiak.mariusz@gmail.com>
2019-08-15 10:29:05 +02:00
Mads Jensen
0b8d911d28
Optimized Field.deconstruct() by using elif.
2019-08-14 10:50:31 +02:00
Simon Charette
efa1908f66
Refs #25367 -- Moved Oracle Exists() handling to contextual methods.
...
Oracle requires the EXISTS expression to be wrapped in a CASE WHEN in
the following cases.
1. When part of a SELECT clause.
2. When part of a ORDER BY clause.
3. When compared against another expression in the WHERE clause.
This commit moves the systematic CASE WHEN wrapping of Exists.as_oracle
to contextual .select_format, Lookup.as_oracle, and OrderBy.as_oracle
methods in order to avoid unnecessary wrapping.
2019-08-13 06:48:14 +02:00
Simon Charette
fff5186d32
Refs #25367 -- Moved select_format hook to BaseExpression.
...
This will expose an intermediary hook for expressions that need special
formatting when used in a SELECT clause.
2019-08-13 06:48:14 +02:00
Simon Charette
088a6fab1c
Refs #24793 -- Removed bogus connection argument from SQLCompiler.compile() calls.
...
The method doesn't expect a connection object to be passed as its second
argument.
2019-08-12 07:47:55 +02:00
Simon Charette
8b3e1b6e9e
Refs #11964 -- Made constraint support check respect required_db_features.
...
This will notably silence the warnings issued when running the test
suite on MySQL.
2019-08-12 06:44:37 +02:00
Diederik van der Boor
25f21bd237
Fixed #28393 -- Added helpful error messages for invalid AutoField/FloatField/IntegerField values.
...
Co-authored-by: Diederik van der Boor <vdboor@edoburu.nl>
Co-authored-by: Nick Pope <nick.pope@flightdataservices.com>
2019-08-05 08:41:29 +02:00
aaktsipetrov
4edad1ddf6
Fixed #30668 -- Made QuerySet.filter() raise NotSupportedError if any of source expressions is not filterable.
2019-08-02 15:06:00 +02:00
Nick Pope
194d1dfc18
Fixed #30661 -- Added models.SmallAutoField.
2019-08-02 11:39:01 +02:00
Étienne Beaulé
5f24e7158e
Fixed #30665 -- Added support for distinct argument to Avg() and Sum().
2019-07-31 11:22:50 +02:00
Jon Dufresne
4122d9d3f1
Refs #28147 -- Fixed setting of OneToOne and Foreign Key fields to None when using attnames.
...
Regression in 519016e5f2
.
2019-07-27 12:04:56 +02:00
Mariusz Felisiak
806ba19bbf
Added Query.is_sliced property.
...
Previously, we used Query.can_filter() mainly to check if a query is
sliced what was confusing.
2019-07-25 20:45:55 +02:00
Hasan Ramezani
1853383969
Fixed #27995 -- Added error messages on unsupported operations following union(), intersection(), and difference().
2019-07-25 12:39:55 +02:00
Jon Dufresne
5ed20b3aa3
Fixed #30657 -- Allowed customizing Field's descriptors with a descriptor_class attribute.
...
Allows model fields to override the descriptor class used on the model
instance attribute.
2019-07-25 08:15:20 +02:00
Jon Dufresne
93ffa81bc5
Refs #30657 -- Made DeferredAttribute.__init__() to take a field instance instead of a field name.
2019-07-25 07:24:52 +02:00
Jon Dufresne
d89053585e
Improved error message when index in __getitem__() is invalid.
2019-07-23 20:12:08 +02:00