Index: django/db/models/query.py
===================================================================
--- django/db/models/query.py	(revision 3752)
+++ django/db/models/query.py	(working copy)
@@ -88,6 +88,7 @@
         self._offset = None          # OFFSET clause.
         self._limit = None           # LIMIT clause.
         self._result_cache = None
+        self._for_update = False
 
     ########################
     # PYTHON MAGIC METHODS #
@@ -372,6 +373,10 @@
     def distinct(self, true_or_false=True):
         "Returns a new QuerySet instance with '_distinct' modified."
         return self._clone(_distinct=true_or_false)
+    
+    def for_update(self, update=True):
+        assert update is True or update is False
+        return self._clone(_for_update=update)
 
     def extra(self, select=None, where=None, params=None, tables=None):
         assert self._limit is None and self._offset is None, \
@@ -402,6 +407,7 @@
         c._tables = self._tables[:]
         c._offset = self._offset
         c._limit = self._limit
+        c._for_update = self._for_update
         c.__dict__.update(kwargs)
         return c
 
@@ -505,6 +511,9 @@
             sql.append("%s " % backend.get_limit_offset_sql(self._limit, self._offset))
         else:
             assert self._offset is None, "'offset' is not allowed without 'limit'"
+            
+        if self._for_update is True:
+            sql.append("FOR UPDATE ")
 
         return select, " ".join(sql), params
 
