是否可以选择查看当前页面上的记录索引和总数?
例如:
记录51-100,980总
第2页
我可以使用{% with object_list.count as "pages_total" %}
模板标签,然后在结束代码中使用大量代码..和{%endwith%} .. - 在{% paginate %}
或{% autopaginate %}
之前完成,但这不是似乎是一个很好的解决方案。它还会进行另一次数据库调用。
我在文档中找不到这个,{{ object_list.count }}
在这种情况下给出了50。
答案 0 :(得分:2)
如果您使用的是Django Endless Pagination 2.0,您可以在模板中使用它:
app.get("/contacts/:id", function(req, res) {
db.collection(CONTACTS_COLLECTION).findOne({ _id: new ObjectID(req.params.id) }, function(err, doc) {
if (err) {
handleError(err.message, "Failed to get contact");
} else {
res.status(200).json(doc);
}
});
});
app.put("/contacts/:id", function(req, res) {
var updateDoc = req.body;
db.collection(CONTACTS_COLLECTION).updateOne({_id: new ObjectID(req.params.id)}, updateDoc, function(err, doc) {
if (err) {
handleError(err.message, "Failed to update contact");
} else {
res.status(204).end();
}
});
});
中
答案 1 :(得分:1)
人们往往过于复杂。我在源代码中找到了current_start_index和current_end_index函数(但在实际文档中没有记录)。
以下是如何使用它们来实现这一目标。
{{pages.current_start_index}}至{{pages.current_end_index}} {{pages.total_count}}结果
希望这有助于某人:D
答案 2 :(得分:0)
所有django-pagination paginators扩展了Django的内置Paginator类。最佳解决方案是使用Paginator.count
获取所有页面上的元素总数(如果您将QuerySet
对象传递给Paginator
)。根据文件:
在确定object_list中包含的对象数时,Paginator将首先尝试调用object_list.count()。如果object_list没有count()方法,那么Paginator将回退到使用len(object_list)。这允许对象(如Django的QuerySet)在可用时使用更有效的count()方法。
所以是的,它会做另一个数据库查询,但如果你不知道元素的数量,这是不可避免的。 Django将使用count()
使用SELECT COUNT(*)
语句,这是获取行数的最佳方法。