mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed a flaw in the serializers that prevented OneToOneFields being serialized as JSON objects.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@4433 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
		| @@ -57,7 +57,7 @@ def Deserializer(object_list, **options): | |||||||
|     for d in object_list: |     for d in object_list: | ||||||
|         # Look up the model and starting build a dict of data for it. |         # Look up the model and starting build a dict of data for it. | ||||||
|         Model = _get_model(d["model"]) |         Model = _get_model(d["model"]) | ||||||
|         data = {Model._meta.pk.name : d["pk"]} |         data = {Model._meta.pk.attname : d["pk"]} | ||||||
|         m2m_data = {} |         m2m_data = {} | ||||||
|          |          | ||||||
|         # Handle each field |         # Handle each field | ||||||
|   | |||||||
| @@ -37,6 +37,13 @@ class Article(models.Model): | |||||||
|     def __str__(self): |     def __str__(self): | ||||||
|         return self.headline |         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':""" | __test__ = {'API_TESTS':""" | ||||||
| # Create some data: | # Create some data: | ||||||
| >>> from datetime import datetime | >>> from datetime import datetime | ||||||
| @@ -118,4 +125,18 @@ __test__ = {'API_TESTS':""" | |||||||
| >>> Article.objects.all() | >>> Article.objects.all() | ||||||
| [<Article: Just kidding; I love TV poker>, <Article: Time to reform copyright>] | [<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> | ||||||
|  |  | ||||||
| """} | """} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user