Index: django/core/management/__init__.py
===================================================================
--- django/core/management/__init__.py	(revision 9781)
+++ django/core/management/__init__.py	(working copy)
@@ -1,6 +1,6 @@
 import os
 import sys
-from optparse import OptionParser
+from optparse import OptionParser, NO_DEFAULT
 import imp
 
 import django
@@ -155,8 +155,13 @@
             klass = load_command_class(app_name, name)
     except KeyError:
         raise CommandError, "Unknown command: %r" % name
-    return klass.execute(*args, **options)
 
+    defaults = dict([(o.dest, o.default)
+                      for o in klass.option_list if o.default is not NO_DEFAULT])
+    defaults.update(options)
+
+    return klass.execute(*args, **defaults)
+
 class LaxOptionParser(OptionParser):
     """
     An option parser that doesn't raise any errors on unknown options.
Index: tests/modeltests/user_commands/models.py
===================================================================
--- tests/modeltests/user_commands/models.py	(revision 9781)
+++ tests/modeltests/user_commands/models.py	(working copy)
@@ -17,8 +17,8 @@
 >>> from django.core import management
 
 # Invoke a simple user-defined command
->>> management.call_command('dance')
-I don't feel like dancing.
+>>> management.call_command('dance', style="Jive")
+I don't feel like dancing Jive.
 
 # Invoke a command that doesn't exist
 >>> management.call_command('explode')
@@ -26,5 +26,8 @@
 ...
 CommandError: Unknown command: 'explode'
 
+# Invoke a command with default option `style`
+>>> management.call_command('dance')
+I don't feel like dancing Rock'n'Roll.
 
 """}
Index: tests/modeltests/user_commands/management/commands/dance.py
===================================================================
--- tests/modeltests/user_commands/management/commands/dance.py	(revision 9781)
+++ tests/modeltests/user_commands/management/commands/dance.py	(working copy)
@@ -1,3 +1,4 @@
+from optparse import make_option
 from django.core.management.base import BaseCommand
 
 class Command(BaseCommand):
@@ -5,5 +6,9 @@
     args = ''
     requires_model_validation = True
 
+    option_list =[
+        make_option("-s", "--style", default="Rock'n'Roll")
+    ]
+
     def handle(self, *args, **options):
-        print "I don't feel like dancing."
\ No newline at end of file
+        print "I don't feel like dancing %s." % options["style"]
