Hey Rajesh, Thank you so much for your comment. Somehow Google didn't sent me a message that I had a reply on my post, so that's why I'm late with my reply.
I think your solution looks neat, but this way I would still need 2 ajax requests wouldn't I? Doesn't self.options.pop('fields', None) delete the fields key from the json data? I'm not that familiar with Python yet, so I'm probably wrong. Please enlighten me :-) The dirty hack I came up with: data = json_serializer.serialize(users.object_list, ensure_ascii=False, fields=('username', 'first_name', 'last_name', 'email')) return HttpResponse('[{"numpages": "' + str(users.paginator.num_pages) + '", "start_index": "'+ str(users.start_index()) +'", "end_index": "'+ str(users.end_index()) +'", "count": "'+ str(p.count) +'", "has_next": "'+ str(int(users.has_next())) +'", "has_previous": "'+ str(int(users.has_previous())) +'", ' + data[2:], mimetype='application/javascript') It's isn't pretty, but it works. I'm going to try your solution, I will reply if it works. Greets, Henk. On 2 okt, 21:41, Rajesh Dhawan <[EMAIL PROTECTED]> wrote: > Hi, > > > > > I have the following: > > [snip] > > def people_json(request): > > userobjects = User.objects.filter(is_superuser=False).extra(order_by > > = ['auth_user.username+0']) > > p =Paginator(userobjects, 10) > > pagenumber = request.POST.get('pagenumber', 1) > > try: > > users = p.page(pagenumber) > > except: > > users = p.page(1) > > json_serializer = serializers.get_serializer("json")() > > data = json_serializer.serialize(users.object_list, > > ensure_ascii=False, fields=('username', 'first_name', 'last_name', > > 'email')) > > return HttpResponse(data, mimetype='application/javascript') > > [/snip] > > > This will return aJSONstring to the browser that I use to make a > > people overview that uses AJAX. > > Anyway, because I have to draw 'previous' and 'next' buttons, I want > > to attach some extra data to thejsonresponse. > > > For example I would like to concatenate the following list to the > > response: > > pageinfo = [p.start_index(), p.end_index(), p.paginator.count, > > p.has_next(), p.has_previous()] > > > I tried to convert users.object_list to a list and concatenate it with > > pageinfo, but that doesn't work ( tells me str doesn't have the > > attribute _meta ). > > I don't want to use html as a response because that would throw more > > bytes over the pipe. ( it's also slower ). > > I also don't want to use 2 separate requests because that would be > > more overhead ( 2 separate requests take more time and it would also > > result in to 2 queries because thePaginatorhas to be initiated once > > again ). > > > Does anyone have a good solution for this problem? Using Django has > > been a great experience but things like this take a looooot of time. > > You could register your own[1] serializer class that extends the built- > inJSONserializer. > > You serializer would be something like this: > > from django.utils import simplejson > from django.core.serializers importjson > > class Serializer(json.Serializer): > def __init__(self, dict): > self.dict = dict or {} > def end_serialization(self): > self.options.pop('stream', None) > self.options.pop('fields', None) > self.dict['objects'] = self.objects > simplejson.dump(self.dict, self.stream, > cls=json.DjangoJSONEncoder, **self.options) > > See this setting to register your own serializer: > [1]http://docs.djangoproject.com/en/dev/ref/settings/#serialization-modules > > Let's say you registered this custom serializer as "my_json". You'd > use it like this: > > dict = {'pageinfo':pageinfo} # where pageinfo is your previously > mentioned list > json_serializer = serializers.get_serializer("json")(dict) > data = json_serializer.serialize(users.object_list, > ensure_ascii=False, fields=('username', 'first_name', 'last_name', > 'email')) > > The "dict" can contain any keys and values that > django.utils.simplejson can encode. > > -RD --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com 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 -~----------~----~----~----~------~----~------~--~---