summaryrefslogtreecommitdiff
path: root/docs/ref/models
diff options
context:
space:
mode:
authorRan Benita <ran234@gmail.com>2017-10-17 11:28:00 +0800
committerTim Graham <timograham@gmail.com>2017-10-28 20:33:42 -0400
commit03049fb8d96ccd1f1ed0285486103542de42faba (patch)
tree243c0b4cc9b622a47ce7a665d36d8b4ab4973a0d /docs/ref/models
parent56b364bacca0d6a6cd8fbcd93aeb49f3ad46e58c (diff)
Refs #28010 -- Allowed reverse related fields in SELECT FOR UPDATE .. OF.
Thanks Adam Chidlow for polishing the patch.
Diffstat (limited to 'docs/ref/models')
-rw-r--r--docs/ref/models/querysets.txt13
1 files changed, 13 insertions, 0 deletions
diff --git a/docs/ref/models/querysets.txt b/docs/ref/models/querysets.txt
index fe2c827e63..bd20fbdcea 100644
--- a/docs/ref/models/querysets.txt
+++ b/docs/ref/models/querysets.txt
@@ -1628,6 +1628,19 @@ specify the related objects you want to lock in ``select_for_update(of=(...))``
using the same fields syntax as :meth:`select_related`. Use the value ``'self'``
to refer to the queryset's model.
+You can't use ``select_for_update()`` on nullable relations::
+
+ >>> Person.objects.select_related('hometown').select_for_update()
+ Traceback (most recent call last):
+ ...
+ django.db.utils.NotSupportedError: FOR UPDATE cannot be applied to the nullable side of an outer join
+
+To avoid that restriction, you can exclude null objects if you don't care about
+them::
+
+ >>> Person.objects.select_related('hometown').select_for_update().exclude(hometown=None)
+ <QuerySet [<Person: ...)>, ...]>
+
Currently, the ``postgresql``, ``oracle``, and ``mysql`` database
backends support ``select_for_update()``. However, MySQL doesn't support the
``nowait``, ``skip_locked``, and ``of`` arguments.