有什么方法可以在Django中序列化分页对象? [英] Any way to serialize a pagination object in Django?
本文介绍了有什么方法可以在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屋!
查看全文