Author: russellm
Date: 2007-01-27 07:42:51 -0600 (Sat, 27 Jan 2007)
New Revision: 4433

Modified:
   django/trunk/django/core/serializers/python.py
   django/trunk/tests/modeltests/serializers/models.py
Log:
Fixed a flaw in the serializers that prevented OneToOneFields being serialized 
as JSON objects.


Modified: django/trunk/django/core/serializers/python.py
===================================================================
--- django/trunk/django/core/serializers/python.py      2007-01-26 23:27:26 UTC 
(rev 4432)
+++ django/trunk/django/core/serializers/python.py      2007-01-27 13:42:51 UTC 
(rev 4433)
@@ -57,7 +57,7 @@
     for d in object_list:
         # Look up the model and starting build a dict of data for it.
         Model = _get_model(d["model"])
-        data = {Model._meta.pk.name : d["pk"]}
+        data = {Model._meta.pk.attname : d["pk"]}
         m2m_data = {}
         
         # Handle each field

Modified: django/trunk/tests/modeltests/serializers/models.py
===================================================================
--- django/trunk/tests/modeltests/serializers/models.py 2007-01-26 23:27:26 UTC 
(rev 4432)
+++ django/trunk/tests/modeltests/serializers/models.py 2007-01-27 13:42:51 UTC 
(rev 4433)
@@ -37,6 +37,13 @@
     def __str__(self):
         return self.headline
 
+class AuthorProfile(models.Model):
+    author = models.OneToOneField(Author)
+    date_of_birth = models.DateField()
+    
+    def __str__(self):
+        return "Profile of %s" % self.author
+
 __test__ = {'API_TESTS':"""
 # Create some data:
 >>> from datetime import datetime
@@ -118,4 +125,18 @@
 >>> Article.objects.all()
 [<Article: Just kidding; I love TV poker>, <Article: Time to reform copyright>]
 
+# If you use your own primary key field (such as a OneToOneField), 
+# it doesn't appear in the serialized field list - it replaces the
+# pk identifier.
+>>> profile = AuthorProfile(author=joe, date_of_birth=datetime(1970,1,1))
+>>> profile.save()
+
+>>> json = serializers.serialize("json", AuthorProfile.objects.all())
+>>> json
+'[{"pk": "1", "model": "serializers.authorprofile", "fields": 
{"date_of_birth": "1970-01-01"}}]'
+
+>>> for obj in serializers.deserialize("json", json):
+...     print obj
+<DeserializedObject: Profile of Joe>
+
 """}


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to