Index: django/core/serializers/json.py
===================================================================
--- django/core/serializers/json.py	(revision 6897)
+++ django/core/serializers/json.py	(working copy)
@@ -20,6 +20,8 @@
     """
     Convert a queryset to JSON.
     """
+    internal_use_only = False
+    
     def end_serialization(self):
         self.options.pop('stream', None)
         self.options.pop('fields', None)
Index: django/core/serializers/base.py
===================================================================
--- django/core/serializers/base.py	(revision 6897)
+++ django/core/serializers/base.py	(working copy)
@@ -22,6 +22,10 @@
     Abstract serializer base class.
     """
 
+    # Indicates if the implemented serializer is only available for 
+    # internal Django use.
+    internal_use_only = False
+    
     def serialize(self, queryset, **options):
         """
         Serialize a queryset.
Index: django/core/serializers/pyyaml.py
===================================================================
--- django/core/serializers/pyyaml.py	(revision 6897)
+++ django/core/serializers/pyyaml.py	(working copy)
@@ -19,6 +19,8 @@
     Convert a queryset to YAML.
     """
     
+    internal_use_only = False
+    
     def handle_field(self, obj, field):
         # A nasty special case: base YAML doesn't support serialization of time
         # types (as opposed to dates or datetimes, which it does support). Since
Index: django/core/serializers/__init__.py
===================================================================
--- django/core/serializers/__init__.py	(revision 6897)
+++ django/core/serializers/__init__.py	(working copy)
@@ -53,6 +53,11 @@
         _load_serializers()
     return _serializers.keys()
 
+def get_public_serializer_formats():
+    if not _serializers:
+        _load_serializers()
+    return [k for k, v in _serializers.iteritems() if not v.Serializer.internal_use_only]
+
 def get_deserializer(format):
     if not _serializers:
         _load_serializers()
Index: django/core/serializers/python.py
===================================================================
--- django/core/serializers/python.py	(revision 6897)
+++ django/core/serializers/python.py	(working copy)
@@ -13,7 +13,9 @@
     """
     Serializes a QuerySet to basic Python objects.
     """
-
+    
+    internal_use_only = True
+    
     def start_serialization(self):
         self._current = None
         self.objects = []
Index: django/core/management/commands/dumpdata.py
===================================================================
--- django/core/management/commands/dumpdata.py	(revision 6897)
+++ django/core/management/commands/dumpdata.py	(working copy)
@@ -1,11 +1,13 @@
 from django.core.management.base import BaseCommand, CommandError
+from django.core import serializers
 
 from optparse import make_option
 
 class Command(BaseCommand):
+    serializer_formats = serializers.get_public_serializer_formats()
     option_list = BaseCommand.option_list + (
         make_option('--format', default='json', dest='format',
-            help='Specifies the output serialization format for fixtures'),
+            help='Specifies the output serialization format for fixtures.  Formats available: %s' % serializer_formats),
         make_option('--indent', default=None, dest='indent', type='int',
             help='Specifies the indent level to use when pretty-printing output'),
     )
@@ -14,7 +16,6 @@
 
     def handle(self, *app_labels, **options):
         from django.db.models import get_app, get_apps, get_models
-        from django.core import serializers
 
         format = options.get('format', 'json')
         indent = options.get('indent', None)
@@ -26,6 +27,9 @@
 
         # Check that the serialization format exists; this is a shortcut to
         # avoid collating all the objects and _then_ failing.
+        if format not in self.serializer_formats:
+            raise CommandError("Unknown serialization format: %s" % format)
+        
         try:
             serializers.get_serializer(format)
         except KeyError:
Index: django/core/management/commands/loaddata.py
===================================================================
--- django/core/management/commands/loaddata.py	(revision 6897)
+++ django/core/management/commands/loaddata.py	(working copy)
@@ -50,10 +50,10 @@
             parts = fixture_label.split('.')
             if len(parts) == 1:
                 fixture_name = fixture_label
-                formats = serializers.get_serializer_formats()
+                formats = serializers.get_public_serializer_formats()
             else:
                 fixture_name, format = '.'.join(parts[:-1]), parts[-1]
-                if format in serializers.get_serializer_formats():
+                if format in serializers.get_public_serializer_formats():
                     formats = [format]
                 else:
                     formats = []
Index: tests/modeltests/fixtures/fixtures/fixture4.python
===================================================================
--- tests/modeltests/fixtures/fixtures/fixture4.python	(revision 0)
+++ tests/modeltests/fixtures/fixtures/fixture4.python	(revision 0)
@@ -0,0 +1 @@
+[{'pk': 2, 'model': u'app1.article', 'fields': {'headline': u'Time to reform copyright', 'pub_date': datetime.datetime(2007, 12, 2, 23, 8, 38, 252919)}}, {'pk': 1, 'model': u'app1.article', 'fields': {'headline': u'Poker has no place on ESPN', 'pub_date': datetime.datetime(2007, 12, 2, 23, 8, 4, 651303)}}]
Index: tests/modeltests/fixtures/models.py
===================================================================
--- tests/modeltests/fixtures/models.py	(revision 6897)
+++ tests/modeltests/fixtures/models.py	(working copy)
@@ -54,6 +54,19 @@
 # object list is unaffected
 >>> Article.objects.all()
 [<Article: XML identified as leading cause of cancer>, <Article: Django conquers world!>, <Article: Copyright is fine the way it is>, <Article: Poker on TV is great!>, <Article: Python program becomes self aware>]
+
+# Try to dump the current contents of the database in a format that is flagged for internal_use_only
+>>> management.call_command('dumpdata', 'fixtures', format='python', verbosity=0)
+Traceback (most recent call last):
+  ...
+SystemExit: 1
+
+# Load a fixture from a format that is flagged for internal_use_only
+>>> management.call_command('loaddata', 'fixture4.python', verbosity=0)
+
+# object list is unaffected
+>>> Article.objects.all()
+[<Article: XML identified as leading cause of cancer>, <Article: Django conquers world!>, <Article: Copyright is fine the way it is>, <Article: Poker on TV is great!>, <Article: Python program becomes self aware>]
 """}
 
 # Database flushing does not work on MySQL with the default storage engine
