#34827: select_for_update example raises TransactionManagementError
-----------------------------------------+------------------------
               Reporter:  SydneyUni-Jim  |          Owner:  nobody
                   Type:  Bug            |         Status:  new
              Component:  Documentation  |        Version:  4.2
               Severity:  Normal         |       Keywords:
           Triage Stage:  Unreviewed     |      Has patch:  0
    Needs documentation:  0              |    Needs tests:  0
Patch needs improvement:  0              |  Easy pickings:  1
                  UI/UX:  0              |
-----------------------------------------+------------------------
 The example for `select_for_update` at
 https://docs.djangoproject.com/en/4.2/ref/models/querysets/#select-for-
 update shows `select-for-update` being used before starting the
 transaction. With Django 4.2.5, this raises a TransactionManagementError.

 {{{
 Traceback (most recent call last):
   File "/site-packages/django/db/models/query.py", line 633, in get
     num = len(clone)
   File "/site-packages/django/db/models/query.py", line 380, in __len__
     self._fetch_all()
   File "/site-packages/django/db/models/query.py", line 1881, in
 _fetch_all
     self._result_cache = list(self._iterable_class(self))
   File "/site-packages/django/db/models/query.py", line 91, in __iter__
     results = compiler.execute_sql(
   File "/site-packages/django/db/models/sql/compiler.py", line 1549, in
 execute_sql
     sql, params = self.as_sql()
   File "/site-packages/django/db/models/sql/compiler.py", line 816, in
 as_sql
     raise TransactionManagementError(
 django.db.transaction.TransactionManagementError: select_for_update cannot
 be used outside of a transaction.
 }}}

 I think the sample should be:

 {{{
 #!python
 from django.db import transaction

 with transaction.atomic():
     entries =
 Entry.objects.select_for_update().filter(author=request.user)
     for entry in entries:
         ...
 }}}

-- 
Ticket URL: <https://code.djangoproject.com/ticket/34827>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/0107018a8223b2c8-b2741684-074a-4a9a-b57a-eb922d4cd3d8-000000%40eu-central-1.amazonses.com.

Reply via email to