Index: django/core/management/__init__.py
===================================================================
--- django/core/management/__init__.py	(revision 17201)
+++ django/core/management/__init__.py	(working copy)
@@ -147,23 +147,30 @@
 
     return klass.execute(*args, **defaults)
 
-class LaxOptionParser(OptionParser):
+class ManagementUtilityOptionParser(OptionParser):
     """
     An option parser that doesn't raise any errors on unknown options.
 
     This is needed because the --settings and --pythonpath options affect
     the commands (and thus the options) that are available to the user.
     """
+
+    def __init__(self, main_help_text=None, **kwargs):
+        """Initialise class with main help string, which is used to 
+        supplement the information printed by OptionParser.print_help()
+        """
+        OptionParser.__init__(self, **kwargs)
+        self.main_help_text = main_help_text
+
     def error(self, msg):
         pass
 
     def print_help(self):
-        """Output nothing.
-
-        The lax options are included in the normal option parser, so under
-        normal usage, we don't need to print the lax options.
+        """Output help generated by OptionParser.print_help() along with 
+        supplementary message
         """
-        pass
+        self.print_lax_help()
+        sys.stdout.write(self.main_help_text + '\n')
 
     def print_lax_help(self):
         """Output the basic options available to every command.
@@ -197,8 +204,9 @@
                     # either way, add it to the args list so we can keep
                     # dealing with options
                     del rargs[0]
-                    raise Exception
-            except:
+                    raise Exception()
+
+            except Exception:
                 largs.append(arg)
 
 class ManagementUtility(object):
@@ -327,15 +335,14 @@
         # Preprocess options to extract --settings and --pythonpath.
         # These options could affect the commands that are available, so they
         # must be processed early.
-        parser = LaxOptionParser(usage="%prog subcommand [options] [args]",
+        parser = ManagementUtilityOptionParser(usage="%prog subcommand [options] [args]",
                                  version=get_version(),
-                                 option_list=BaseCommand.option_list)
+                                 option_list=BaseCommand.option_list,
+                                 main_help_text=self.main_help_text())
+
         self.autocomplete()
-        try:
-            options, args = parser.parse_args(self.argv)
-            handle_default_options(options)
-        except:
-            pass # Ignore any option errors at this point.
+        options, args = parser.parse_args(self.argv)
+        handle_default_options(options)
 
         try:
             subcommand = self.argv[1]
@@ -351,12 +358,7 @@
                 sys.exit(1)
         # Special-cases: We want 'django-admin.py --version' and
         # 'django-admin.py --help' to work, for backwards compatibility.
-        elif self.argv[1:] == ['--version']:
-            # LaxOptionParser already takes care of printing the version.
-            pass
-        elif self.argv[1:] in (['--help'], ['-h']):
-            parser.print_lax_help()
-            sys.stdout.write(self.main_help_text() + '\n')
+        # If --version, --help or -h is specified, we want to exit immediately.
         else:
             self.fetch_command(subcommand).run_from_argv(self.argv)
 
