Index: django/db/models/query.py
===================================================================
--- django/db/models/query.py	(revision 10692)
+++ django/db/models/query.py	(working copy)
@@ -1007,7 +1007,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 10692)
+++ tests/modeltests/delete/models.py	(working copy)
@@ -168,7 +168,16 @@
 >>> o.keys()
 [<class 'modeltests.delete.models.F'>, <class 'modeltests.delete.models.E'>]
 
+# temporarily replace the UpdateQuery class to verify that E.f is actually nulled out first
+>>> import django.db.models.sql
+>>> class PatchedUpdateQuery(django.db.models.sql.UpdateQuery):
+...     def clear_related(self, related_field, pk_list):
+...         print related_field.name
+...         return super(PatchedUpdateQuery, self).clear_related(related_field, pk_list)
+>>> original_class = django.db.models.sql.UpdateQuery
+>>> django.db.models.sql.UpdateQuery = PatchedUpdateQuery
 >>> e1.delete()
+f
 
 >>> e2 = E()
 >>> e2.save()
@@ -185,6 +194,9 @@
 [<class 'modeltests.delete.models.F'>, <class 'modeltests.delete.models.E'>]
 
 >>> f2.delete()
+f
 
+# Put this back to normal
+>>> django.db.models.sql.UpdateQuery = original_class
 """
 }
