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
-~----------~----~----~----~------~----~------~--~---