| Age | Commit message (Collapse) | Author |
|
Refs #21169
|
|
The `remove()` and `clear()` methods of the related managers created by
`ForeignKey`, `GenericForeignKey`, and `ManyToManyField` suffered from a
number of issues. Some operations ran multiple data modifying queries without
wrapping them in a transaction, and some operations didn't respect default
filtering when it was present (i.e. when the default manager on the related
model implemented a custom `get_queryset()`).
Fixing the issues introduced some backward incompatible changes:
- The implementation of `remove()` for `ForeignKey` related managers changed
from a series of `Model.save()` calls to a single `QuerySet.update()` call.
The change means that `pre_save` and `post_save` signals aren't called anymore.
- The `remove()` and `clear()` methods for `GenericForeignKey` related
managers now perform bulk delete so `Model.delete()` isn't called anymore.
- The `remove()` and `clear()` methods for `ManyToManyField` related
managers perform nested queries when filtering is involved, which may
or may not be an issue depending on the database and the data itself.
Refs. #3871, #21174.
Thanks Anssi Kääriäinen and Tim Graham for the reviews.
|
|
|
|
|
|
|
|
The issue was that two M2M hidden reverse managers
(related_name ending with a '+') could clash with each other.
Refs #21375 and #15932. Thanks Baptiste.
|
|
|
|
Added an explicit mention of the exact value ranges for integer type
fields that are safe in all databases supported by Django. Also, put
all value numbers inside double ticks.
|
|
This patch introduces the Prefetch object which allows customizing prefetch
operations.
This enables things like filtering prefetched relations, calling select_related
from a prefetched relation, or prefetching the same relation multiple times
with different querysets.
When a Prefetch instance specifies a to_attr argument, the result is stored
in a list rather than a QuerySet. This has the fortunate consequence of being
significantly faster. The preformance improvement is due to the fact that we
save the costly creation of a QuerySet instance.
Thanks @akaariai for the original patch and @bmispelon and @timgraham
for the reviews.
|
|
|
|
|
|
and how to prevent table-name truncation
Thanks russellm & timo for discussion, and timo for review.
|
|
Thanks dan at dlo.me for the initial patch.
- Added __pow__ and __rpow__ to ExpressionNode
- Added oracle and mysql specific power expressions
- Added used-defined power function for sqlite
|
|
Thanks bjb at credil.org for the report.
|
|
select_related('foo').select_related('bar') is now equivalent to
select_related('foo', 'bar').
Also reworded docs to recommend select_related(*fields) over select_related()
|
|
Thanks leahculver for the suggestion and dc and vajrasky for work
on the patch.
|
|
* Removed trailing whitespace.
* Added newline to EOF if missing.
* Removed blank lines at EOF.
* Removed some stray tabs.
|
|
Thanks neithere for the suggestion.
|
|
|
|
Just changed as to has.
|
|
Day, month, and week_day lookups now require time zone definitions in the database.
|
|
Thanks Panagiotis Issaris for the report.
|
|
Thanks outofculture at gmail.com for the suggestion.
|
|
|
|
re-indented method documentation within RelatedManager
|
|
|
|
Fixed #20920 -- Consolidated F() and Q() documentation
|
|
|
|
direct replacement of related object set
|
|
The documentation and comments now all use 'an' to
refer to the word SQL and not 'a'.
|
|
|
|
The option can be used to force pre 1.6 style SELECT on save behaviour.
This is needed in case the database returns zero updated rows even if
there is a matching row in the DB. One such case is PostgreSQL update
trigger that returns NULL.
Reviewed by Tim Graham.
Refs #16649
|
|
Conflicts:
django/db/backends/oracle/base.py
django/db/backends/postgresql_psycopg2/base.py
django/db/models/signals.py
tests/queries/tests.py
|
|
The __eq__ method now considers two instances without primary key value
equal only when they have same id(). The __hash__ method raises
TypeError for no primary key case.
Fixed #18864, fixed #18250
Thanks to Tim Graham for docs review.
|
|
Added OneToOneField to the list of model fields for which the unique
argument isn't valid. (OneToOneFields are inherently unique, and if
the user supplies a value for unique it is ignored / overwritten.)
|
|
Although the ModelForm validation code was changed to call
Model.full_clean(), the documentation still said otherwise. The
offending phrase was removed.
|
|
Added OneToOneField to the list of model fields for which the unique
argument isn't valid. (OneToOneFields are inherently unique, and if
the user supplies a value for unique it is ignored / overwritten.)
|
|
Conflicts:
docs/ref/django-admin.txt
|
|
|
|
Added proxy_models tests by Harm Geerts <github@geertswei.nl>.
|
|
Fixed #11892, fixed #16458, fixed #14492.
|
|
|
|
Conflicts:
django/db/models/options.py
|
|
Thanks hvendelbo for the suggestion and koenb for the draft patch.
|
|
Conflicts:
django/core/management/commands/flush.py
django/core/management/commands/syncdb.py
django/db/models/loading.py
docs/internals/deprecation.txt
docs/ref/django-admin.txt
docs/releases/1.7.txt
|
|
Fixed #20484 again -- added note to field documentation
|
|
|
|
Sphinx generates left single quotes for apostrophes after
code markup, when right single quotes are required. The
easiest way to fix this is just by inserting the unicode
character for a right single quote.
Instances of the problem were found by looking for
">‘" in the generated HTML.
|
|
|
|
prefetch_related() docs.
|