Index: django/db/models/query.py
===================================================================
--- django/db/models/query.py	(revision 10065)
+++ django/db/models/query.py	(working copy)
@@ -1006,7 +1006,7 @@
             update_query = sql.UpdateQuery(cls, connection)
             for field, model in cls._meta.get_fields_with_model():
                 if (field.rel and field.null and field.rel.to in seen_objs and
-                        filter(lambda f: f.column == field.column,
+                        filter(lambda f: f.column == field.rel.get_related_field().column,
                         field.rel.to._meta.fields)):
                     if model:
                         sql.UpdateQuery(model, connection).clear_related(field,
Index: tests/modeltests/delete/models.py
===================================================================
--- tests/modeltests/delete/models.py	(revision 10065)
+++ tests/modeltests/delete/models.py	(working copy)
@@ -168,7 +168,17 @@
 >>> o.keys()
 [<class 'modeltests.delete.models.F'>, <class 'modeltests.delete.models.E'>]
 
+# Monkey-patch the UpdateQuery class to verify that E.f is actually nulled out first
+>>> from django.db.models.sql import UpdateQuery
+>>> def clear_related_wrapper(old_clr):
+...     def _w(self, related_field, pk_list):
+...         print related_field.name
+...         return old_clr(self, related_field, pk_list)
+...     return _w
+>>> old_clear_related = UpdateQuery.clear_related
+>>> UpdateQuery.clear_related = clear_related_wrapper(UpdateQuery.clear_related)
 >>> e1.delete()
+f
 
 >>> e2 = E()
 >>> e2.save()
@@ -185,6 +195,9 @@
 [<class 'modeltests.delete.models.F'>, <class 'modeltests.delete.models.E'>]
 
 >>> f2.delete()
+f
 
+# Put this back to normal
+>>> UpdateQuery.clear_related = old_clear_related
 """
 }
