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
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
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
Nadège Michel
87b1ad6e73
Fixed #30421 -- Allowed symmetrical intermediate table for self-referential ManyToManyField.
2019-06-21 15:03:17 +02:00
Tobias Kunze
a44a21a22f
Fixed #26678 -- Doc'd that RelatedManager.add()/remove()/set() accepts the field the relation points to.
2019-05-07 08:55:45 +02:00
Mariusz Felisiak
5f7991c42c
Fixed #30325 -- Reverted "Fixed #29725 -- Removed unnecessary join in QuerySet.count() and exists() on a many-to-many relation."
...
This reverts commit 1299421cad
due to
a regression with custom managers.
2019-04-15 12:02:26 +02:00
Simon Charette
de7f6b51b2
Refs #19544 -- Added a fast path for through additions if supported.
...
The single query insertion path is taken if the backend supports inserts
that ignore conflicts and m2m_changed signals don't have to be sent.
2019-02-21 10:20:47 -05:00
Simon Charette
28712d8acf
Refs #19544 -- Ignored auto-created through additions conflicts if supported.
...
This prevents IntegrityError caused by race conditions between missing ids
retrieval and bulk insertions.
2019-02-21 10:20:47 -05:00
Simon Charette
dd32f9a3a2
Refs #19544 -- Extracted ManyRelatedManager.add() missing ids logic to a method.
2019-02-21 10:20:47 -05:00
Simon Charette
dbcf2ffa77
Refs #9475 -- Simplified dictionary unpacking.
2019-01-16 09:20:15 -05:00
Nick Pope
d212bc03ba
Refs #9475 -- Fixed typo, used unpacking generalization, and made through_defaults kwarg-only.
2019-01-15 13:03:08 -05:00
Collin Anderson
769355c765
Fixed #9475 -- Allowed RelatedManager.add(), create(), etc. for m2m with a through model.
2019-01-15 11:12:17 -05:00
Simon Charette
0cf85e6b07
Refs #29908 -- Optimized known related objects assignment.
...
Since CPython implements a C level attrgetter(*attrs) it even outperforms the
most common case of a single known related object since the resulting attribute
values tuple is built in C.
2018-11-17 18:56:11 -05:00
Simon Charette
75dfa92a05
Fixed #29908 -- Fixed setting of foreign key after related set access if ForeignKey uses to_field.
...
Adjusted known related objects handling of target fields which relies on
from and to_fields and has the side effect of fixing a bug bug causing
N+1 queries when using reverse foreign objects.
Thanks Carsten Fuchs for the report.
2018-11-08 19:51:15 -05:00
oliver
1299421cad
Fixed #29725 -- Removed unnecessary join in QuerySet.count() and exists() on a many-to-many relation.
2018-10-15 11:01:57 -04:00
Alexandr Tatarinov
7410618528
Fixed #29447 -- Made RelatedManager.set() pass bulk argument to clear().
2018-06-25 13:04:46 -04:00
Paulo
265506bbc3
Refs #28834 -- Moved ancestor field cached value fallback to related fields descriptor.
2018-05-14 21:17:02 -04:00
Stefan R. Filipek
a5a2ceeb45
Fixed #27629 -- Added router.allow_relation() calls for assignments between unsaved model instances.
2018-05-10 20:42:44 -04:00
Jon Dufresne
8b21878357
Refs #28723 -- Fixed stale prefetch_related cache after add/remove.
...
Regression in 514b2c989a
.
2018-02-05 11:02:57 -05:00
Mike Hansen
514b2c989a
Fixed #28723 -- Fixed RelatedManager's prefetch_related() cache name.
2017-11-02 10:06:00 -04:00
Paulo
fcfcf8aae4
Fixed #28742 -- Fixed AttributeError crash when assigning None to cached reverse relations.
2017-10-30 14:02:03 -04:00
Simon Charette
d4fb742094
Refs #28575 -- Made RelatedObjectDoesNotExist classes pickable.
...
Thanks to Rachel Tobin for the initial __qualname__ work and tests.
2017-10-18 21:43:53 -04:00
Simon Charette
0a69479b6c
Fixed outdated comment in RelatedObjectDoesNotExist.
2017-10-18 20:31:47 -04:00
Simon Charette
9dd405973c
Corrected examples in related field descriptor docstrings.
...
Using lowercased model class names suggested that accessing the attribute
from instances of the class returned an instance of the descriptor, but
this is only the case when accessed from the model class.
2017-10-13 16:06:08 -04:00
Paulo
fea9cb46aa
Fixed #28375 -- Fixed KeyError crash on reverse prefetch of a model with OneToOneField primary key to a non-pk field.
2017-08-21 16:14:13 -04:00
Paulo
bfb746f983
Refs #16043 -- Refactored internal fields value cache.
...
* Removed all hardcoded logic for _{fieldname}_cache.
* Added an internal API for interacting with the field values cache.
Thanks carljm and MarkusH for support.
2017-08-10 12:06:02 -04:00
Sergey Fedoseev
38988f289f
Avoided creation of temporary sets.
2017-07-29 10:16:43 -04:00
Paulo Alvarado
c432927160
Fixed #26362 -- Fixed update of the inherited id field of an object when its parent changes.
2017-06-26 12:11:20 -04:00
Tim Graham
5a52d932ef
Replaced Model._get_pk_val() with pk property.
...
Model.pk was added after _get_pk_val() and many places weren't simplified.
2017-06-05 15:20:34 -04:00
Jon Dufresne
2c69824e5a
Refs #23968 -- Removed unnecessary lists, generators, and tuple calls.
2017-06-01 19:08:59 -04:00
Tim Graham
59ab1b2683
Fixed #28210 -- Fixed Model._state.adding on MTI parent model after saving child model.
...
Regression in 38575b007a
.
2017-05-19 13:22:17 -04:00
Tim Graham
584e10c76e
Fixed #28166 -- Fixed Model._state.db on MTI parent model after saving child model.
...
Regression in 38575b007a
.
2017-05-03 12:14:15 -04:00
Vytis Banaitis
8838d4dd49
Refs #23919 -- Replaced kwargs.pop() with keyword-only arguments.
2017-02-01 11:41:56 -05:00
chillaranand
d6eaf7c018
Refs #23919 -- Replaced super(ClassName, self) with super().
2017-01-25 12:23:46 -05:00
Simon Charette
9695b14982
Refs #23919 -- Removed str() conversion of type and method __name__.
2017-01-19 11:31:07 -05:00
Simon Charette
cecc079168
Refs #23919 -- Stopped inheriting from object to define new style classes.
2017-01-19 08:39:46 +01:00
Claude Paroz
d7b9aaa366
Refs #23919 -- Removed encoding preambles and future imports
2017-01-18 09:55:19 +01:00
Tim Graham
631f4ab061
Removed Manager.use_for_related_fields and Meta.manager_inheritance_from_future.
...
Per deprecation timeline. Refs ed0ff913c6
.
2017-01-17 20:52:04 -05:00
Tim Graham
ed251246cc
Refs #25550 -- Removed support for direct assignment to the reverse side of a related set.
2017-01-17 20:52:01 -05:00
Andrey Kuzminov
b8741c0058
Refs #18823 -- Corrected field name in an m2m manager error message.
2016-12-23 09:31:26 -05:00
InvalidInterrupt
98359109eb
Fixed #17002 -- Allowed using a ManyToManyField through model that inherits another.
2016-12-07 17:50:51 -05:00
Yoong Kang Lim
d30febb4e5
Fixed #26706 -- Made RelatedManager modification methods clear prefetch_related() cache.
2016-08-05 13:32:27 -04:00
Tim Graham
5fa4370543
Refs #25550 -- Corrected deprecation message for assigning M2M relations.
2016-07-30 20:50:09 -04:00
Julien Hartmann
f4afb85d7e
Fixed #26749 -- Preserved behavior of use_for_related_field during deprecation.
2016-07-11 13:30:44 -04:00
Tim Graham
908c26b079
Fixed typos in db/models/fields/related_descriptors.py
2016-06-07 08:53:05 -04:00
Paulo
1a2a7cc01e
Fixed typo in db/models/fields/related_descriptors.py
2016-06-07 08:50:06 -04:00
Paulo
3e9f769fd1
Refs #15250 -- Added docstring for ForwardOneToOneDescriptor.
2016-06-07 07:22:32 -04:00
Paulo
38575b007a
Fixed #15250 -- Avoided extra query on some multi-table inheritance queries.
...
Thanks marekw2143 for the initial patch and carljm for support.
2016-06-03 10:18:24 -04:00
Loïc Bistuer
ed0ff913c6
Fixed #10506 , #13793 , #14891 , #25201 -- Introduced new APIs to specify models' default and base managers.
...
This deprecates use_for_related_fields.
Old API:
class CustomManager(models.Model):
use_for_related_fields = True
class Model(models.Model):
custom_manager = CustomManager()
New API:
class Model(models.Model):
custom_manager = CustomManager()
class Meta:
base_manager_name = 'custom_manager'
Refs #20932 , #25897 .
Thanks Carl Meyer for the guidance throughout this work.
Thanks Tim Graham for writing the docs.
2016-05-17 12:07:22 +07:00
Ville Skyttä
575a9a791e
Normalized "an SQL" spelling.
2016-05-03 19:30:48 -04:00