Index: django/core/serializers/xml_serializer.py
===================================================================
--- django/core/serializers/xml_serializer.py	(revision 4454)
+++ django/core/serializers/xml_serializer.py	(working copy)
@@ -5,6 +5,7 @@
 from django.conf import settings
 from django.core.serializers import base
 from django.db import models
+from django.db.models.fields.related import OneToOneRel
 from django.utils.xmlutils import SimplerXMLGenerator
 from xml.dom import pulldom
 
@@ -88,6 +89,17 @@
             self.xml.addQuickElement("object", attrs={"pk" : str(relobj._get_pk_val())})
         self.xml.endElement("field")
         
+    def handle_o2m_field(self, obj, field):
+        if not isinstance(field.field.rel, OneToOneRel):
+            self.xml.startElement("field", {
+                "name" : field.get_accessor_name(),
+                "rel"  : field.field.rel.__class__.__name__,
+                "to"   : field.field.name,
+            })
+            for relobj in getattr(obj, field.get_accessor_name()).iterator():
+                self.xml.addQuickElement("object", attrs={"pk" : str(relobj._get_pk_val())})
+            self.xml.endElement("field")
+    
     def _start_relational_field(self, field):
         """
         Helper to output the <field> element for relational fields
@@ -218,4 +230,4 @@
             inner_text.extend(getInnerText(child))
         else:
            pass
-    return "".join(inner_text)
\ No newline at end of file
+    return "".join(inner_text)
Index: django/core/serializers/base.py
===================================================================
--- django/core/serializers/base.py	(revision 4454)
+++ django/core/serializers/base.py	(working copy)
@@ -30,6 +30,10 @@
         self.stream = options.get("stream", StringIO())
         self.selected_fields = options.get("fields")
 
+        self.include_reverse_relations = options.get("include_reverse_relations", False)
+        if self.options.has_key("include_reverse_relations"):
+            del self.options["include_reverse_relations"]
+
         self.start_serialization()
         for obj in queryset:
             self.start_object(obj)
@@ -45,6 +49,9 @@
             for field in obj._meta.many_to_many:
                 if self.selected_fields is None or field.attname in self.selected_fields:
                     self.handle_m2m_field(obj, field)
+            if self.include_reverse_relations:
+                for field in obj._meta.get_all_related_objects():
+                    self.handle_o2m_field(obj, field)
             self.end_object(obj)
         self.end_serialization()
         return self.getvalue()
@@ -107,6 +114,12 @@
         """
         raise NotImplementedError
 
+    def handle_o2m_field(self, obj, field):
+        """
+        Called to handle a OneToManyField.
+        """
+        raise NotImplementedError
+
     def getvalue(self):
         """
         Return the fully serialized queryset.
Index: django/core/serializers/python.py
===================================================================
--- django/core/serializers/python.py	(revision 4454)
+++ django/core/serializers/python.py	(working copy)
@@ -7,6 +7,7 @@
 from django.conf import settings
 from django.core.serializers import base
 from django.db import models
+from django.db.models.fields.related import OneToOneRel
 
 class Serializer(base.Serializer):
     """
@@ -43,6 +44,10 @@
     def handle_m2m_field(self, obj, field):
         self._current[field.name] = [related._get_pk_val() for related in getattr(obj, field.name).iterator()]
     
+    def handle_o2m_field(self, obj, field):
+        if not isinstance(field.field.rel, OneToOneRel):
+            self._current[field.get_accessor_name()] = [related._get_pk_val() for related in getattr(obj, field.get_accessor_name()).iterator()]
+    
     def getvalue(self):
         return self.objects
 
