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: | ||||
|         # 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 | ||||
|   | ||||
| @@ -37,6 +37,13 @@ class Article(models.Model): | ||||
|     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 @@ __test__ = {'API_TESTS':""" | ||||
| >>> 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> | ||||
|  | ||||
| """} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user