Index: django/contrib/contenttypes/management.py
===================================================================
--- django/contrib/contenttypes/management.py	(revision 12213)
+++ django/contrib/contenttypes/management.py	(working copy)
@@ -28,14 +28,27 @@
     # The presence of any remaining content types means the supplied app has an
     # undefined model and can safely be removed, which cascades to also remove
     # related permissions.
-    for ct in content_types:
-        if verbosity >= 2:
-            print "Deleting stale content type '%s | %s'" % (ct.app_label, ct.model)
-        ct.delete()
+    if content_types:
+        if kwargs.get('delete_stale', False):
+            for ct in content_types:
+                if verbosity >= 2:
+                    print "Deleting stale content type '%s | %s'" % (ct.app_label, ct.model)
+                ct.delete()
+        else:
+            print """
+The following content types are stale:
+%s
+They may still be referenced by other models, so they are not being deleted.
+To delete them, run:
+>>> from django.contrib.contenttypes.management import update_all_contenttypes
+>>> update_all_contenttypes(verbosity=2, delete_stale=False)
+Verify that no other models reference those content types, then run:
+>>> update_all_contenttypes(verbosity=2, delete_stale=True)
+""" % ', '.join(['%s | %s' % (ct.app_label, ct.model) for ct in content_types])
 
-def update_all_contenttypes(verbosity=2):
+def update_all_contenttypes(verbosity=2, **kwargs):
     for app in get_apps():
-        update_contenttypes(app, None, verbosity)
+        update_contenttypes(app, None, verbosity, **kwargs)
 
 signals.post_syncdb.connect(update_contenttypes)
 
