有什么方法可以在Django中序列化分页对象? [英] Any way to serialize a pagination object in Django?

查看:60
本文介绍了有什么方法可以在Django中序列化分页对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在jQuery中使用Django分页.我可以序列化分页对象的对象列表,但我想序列化整个对象以获取更多数据(页数,总页数...).如何序列化整个分页对象?

I'm using Django pagination with jQuery. I can serialize the objects list of the pagination object, but I'd like to serialize the whole object to get more data (page number, total number of pages...). How can I serialize the whole pagination object?

谢谢

javascript

javascript

function getRestaurants(query) {

        $.post("/getRestaurant/", query,
            function(data) {
                /* do stuff with data */
             },"json" );
}

views.py

def getRestaurant(request):

    results = Restaurant.objects.all()
    paginator = Paginator(restaurants, 5)

    # Make sure page request is an int. If not, deliver first page.
    try:
        page = int(request.POST.get('page','1'))
    except ValueError:
        page = 1

    # If page request (9999) is out of range, deliver last page of results.
    try:
        results = paginator.page(page)
    except (EmptyPage, InvalidPage):
        results = paginator.page(paginator.num_pages)

    data=serializers.serialize("json", results.object_list) #I'd like to serialize the whole results object

    return HttpResponse(data)

推荐答案

我的建议是丢弃分页器对象&自己切片queryset.这样,您可以轻松地序列化输出.

my suggestion is to discard the paginator object & slice the queryset yourself. this way you could easily serialize the output.

作为示例,如果要将注释列表序列化为json格式,可以按照以下方法操作:

as an example, here's how you might wanna do that if you wanna serialize a list of comments into json format:

comment_list = ArticleComment.objects.filter(article__id=int(_id), is_public=True).values('created', 'tag', 'content', 'author').order_by('-created')   
    start = (page_num - 1) * COMMENTS_PER_PAGE
    end = page_num * COMMENTS_PER_PAGE
    return HttpResponse(json.dumps(list(comment_list[start:end]), cls=DjangoJSONEncoder))

这篇关于有什么方法可以在Django中序列化分页对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆