Index: django/core/management/commands/dumpdata.py
===================================================================
--- django/core/management/commands/dumpdata.py	(revision 7534)
+++ django/core/management/commands/dumpdata.py	(working copy)
@@ -2,6 +2,7 @@
 from django.core import serializers
 
 from optparse import make_option
+import sys
 
 class Command(BaseCommand):
     option_list = BaseCommand.option_list + (
@@ -9,6 +10,11 @@
             help='Specifies the output serialization format for fixtures.'),
         make_option('--indent', default=None, dest='indent', type='int',
             help='Specifies the indent level to use when pretty-printing output'),
+        make_option('-e', '--exclude', dest='exclude',action='append', default=None, 
+            help='App to exclude (use multiple --exclude to exclude multiple apps).'),
+        make_option('-v', '--verbosity', action='store', dest='verbosity', default='0',
+            type='choice', choices=['0', '1', '2'],
+            help='Verbosity level; 0=minimal output, 1=normal output, 2=all output'),
     )
     help = 'Output the contents of the database as a fixture of the given format.'
     args = '[appname ...]'
@@ -16,15 +22,34 @@
     def handle(self, *app_labels, **options):
         from django.db.models import get_app, get_apps, get_models
 
-        format = options.get('format', 'json')
-        indent = options.get('indent', None)
-        show_traceback = options.get('traceback', False)
+        format = options.get('format')
+        indent = options.get('indent')
+        exclude = options.get('exclude')
+        verbosity = int(options.get('verbosity'))
+        show_traceback = options.get('traceback')
 
+        if verbosity >= 2:
+            sys.stderr.write( 
+                "format %s\nindent %s\nexclude %s\nshow_traceback %s\n" % \
+                (format, indent, exclude, show_traceback) )
+            sys.stderr.write( "apps %s\n" % (app_labels,) )
+
         if len(app_labels) == 0:
             app_list = get_apps()
         else:
             app_list = [get_app(app_label) for app_label in app_labels]
 
+        if exclude:
+            excl_apps = [get_app(app_label) for app_label in exclude]
+            for excl_app in excl_apps:
+                app_list.remove(excl_app)
+                if verbosity >= 2:
+                   sys.stderr.write( "excluded: %s\n" % excl_app.__name__ )
+        
+        if verbosity >= 2:
+            for app in app_list:
+                sys.stderr.write( "included: %s\n" % app.__name__ )
+            
         # Check that the serialization format exists; this is a shortcut to
         # avoid collating all the objects and _then_ failing.
         if format not in serializers.get_public_serializer_formats():
@@ -37,7 +62,13 @@
 
         objects = []
         for app in app_list:
+            if verbosity >= 1:
+                sys.stderr.write( "dumping %s/n" % (app.__name__) )
             for model in get_models(app):
+                if verbosity >= 1:
+                    # model dosn't have a good __str,
+                    # so for now "<class... model_name>" is better than nothing.
+                    sys.stderr.write("dumping %s,%s\n" % (app.__name__, model))
                 objects.extend(model._default_manager.all())
         try:
             return serializers.serialize(format, objects, indent=indent)
