django-endless-pagination django-pagination记录页面和总数的索引

时间:2012-02-24 11:49:01

标签: django pagination django-pagination django-endless-pagination

是否可以选择查看当前页面上的记录索引和总数?

例如:

  

记录51-100,980总

第2页

我可以使用{% with object_list.count as "pages_total" %}模板标签,然后在结束代码中使用大量代码..和{%endwith%} .. - 在{% paginate %}{% autopaginate %}之前完成,但这不是似乎是一个很好的解决方案。它还会进行另一次数据库调用。

我在文档中找不到这个,{{ object_list.count }}在这种情况下给出了50。

3 个答案:

答案 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();
    }
  });
});

所有这些都在Django-endless-pagination document

答案 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(*)语句,这是获取行数的最佳方法。