I'm trying to return some JSON from one of my views. My objects are
simple and I can get the built-in json serializer working, but wanted
a cleaner object when I deserialize in my webpage, i.e. I don't want
the pk or model entries. What is the best way to go about that? I
played around a little with overriding the end_object method in an
extension of the shipped JSONSerializer and was able to translate the
pk into the _current object (to reflect the pk as a member of the
object) but the resultant object still had pk/model and the fields
object that I had to traverse into.
my models.py (snippet):
Class Bug (models.Model):
id = models.IntegerField ( primary_key=True)
summary = models.CharField (max_length=256)
status = models.ForeignKey( Status, default=1 )
Class Status (models.Model):
objects = NaturalKeyManager()
value = models.TextField(unique=True, blank=True)
def natural_key(self):
return (self.value)
my serializers.py:
from django.core.serializers.json import Serializer as JSONSerializer
Class Serializer:
def end_object(self, obj):
# to allow bug.fields.bugId in the javascript
self._current['bugId'] = obj.id
# append the object to the array of objects to be serialized
self.objects.append( self._current )
# clear the bug currently being processed so we don't mix up
data
self._current = None
In JSON I'm looking for:
{ "buglist" : [ { "id" : 2, "summary" : "my summary", "status" :
"open" } ] }
versus
{ "buglist" : [ { "pk" : 2, "model" : "my.models.Bug", "fields" :
[ "summary" : "my summary", "status" : "open"] } ] }
thanks for any guidance you can give. Perhaps there is a better way
entirely to handle JSON in django I haven't run across yet.
-- redfive
--
You received this message because you are subscribed to the Google Groups
"Django users" 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-users?hl=en.