Django

Code

Changeset 4433

Show
Ignore:
Timestamp:
01/27/07 07:42:51 (2 years ago)
Author:
russellm
Message:

Fixed a flaw in the serializers that prevented OneToOneFields? being serialized as JSON objects.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/core/serializers/python.py

    r4265 r4433  
    5858        # Look up the model and starting build a dict of data for it. 
    5959        Model = _get_model(d["model"]) 
    60         data = {Model._meta.pk.name : d["pk"]} 
     60        data = {Model._meta.pk.attname : d["pk"]} 
    6161        m2m_data = {} 
    6262         
  • django/trunk/tests/modeltests/serializers/models.py

    r3661 r4433  
    3737    def __str__(self): 
    3838        return self.headline 
     39 
     40class AuthorProfile(models.Model): 
     41    author = models.OneToOneField(Author) 
     42    date_of_birth = models.DateField() 
     43     
     44    def __str__(self): 
     45        return "Profile of %s" % self.author 
    3946 
    4047__test__ = {'API_TESTS':""" 
     
    119126[<Article: Just kidding; I love TV poker>, <Article: Time to reform copyright>] 
    120127 
     128# If you use your own primary key field (such as a OneToOneField),  
     129# it doesn't appear in the serialized field list - it replaces the 
     130# pk identifier. 
     131>>> profile = AuthorProfile(author=joe, date_of_birth=datetime(1970,1,1)) 
     132>>> profile.save() 
     133 
     134>>> json = serializers.serialize("json", AuthorProfile.objects.all()) 
     135>>> json 
     136'[{"pk": "1", "model": "serializers.authorprofile", "fields": {"date_of_birth": "1970-01-01"}}]' 
     137 
     138>>> for obj in serializers.deserialize("json", json): 
     139...     print obj 
     140<DeserializedObject: Profile of Joe> 
     141 
    121142"""}