Revision ea1e5d9f
ID | ea1e5d9f38c45a19eb79a05dfb3b840ffe1e4c74 |
Make ForUpdateManager thread-safe
The manager held a global flag `_for_update' on a single manager object,
which could be read or set by multiple threads.
select_for_update() is now provided by a subclass of QuerySet.
It must be used as the last modifier of a query set,
e.g. Project.objects.filter(state=1).select_for_update(),
and cannot be combined with operators provided by other subclasses,
such as values_list().
Since get() returns an element rather than a query set,
the manager also provides a specific function get_for_update().
Files
- added
- modified
- copied
- renamed
- deleted