﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
34827	select_for_update example raises TransactionManagementError	Jim Nicholls	nobody	"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 example 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:
        ...
}}}
"	Bug	closed	Documentation	4.2	Normal	invalid			Unreviewed	0	0	0	0	1	0
