如何从 django-tables2 中删除分页区域中总行号的表示法

How to remove from django-tables2 a notation of the total row numbers in a pagination area

我无法从基本 django-tables2 example 重现 table 分页格式的相同外观。这是我的代码

型号:

#models.py
class Person(models.Model):
     name = models.CharField(verbose_name="full name", max_length=200)

Table:

# tables.py
import django_tables2 as tables
from loaddata.models import Person

class PersonTable(tables.Table):
     class Meta:
          model = Person
          # add class="paleblue" to <table> tag
          attrs = {"class": "paleblue"}

查看:

#views.py
from django.shortcuts import render
from django_tables2   import RequestConfig
from loaddata.models  import Person
from loaddata.tables  import PersonTable

def people(request):
     table = PersonTable(Person.objects.all())
     RequestConfig(request, paginate={"per_page": 25}).configure(table)
     return render(request, "loaddata/people.html", {"table": table})

此代码生成以下 table (#1)

而根据 tutorial,table 应该如下所示 (#2)

正如所见,我的 table (#1) 没有显示当前页码,而是显示了数据系列的总数 (2 persons)。但是如果view中的分页per_page参数改为1,即

查看修改:

#views.py
...
     RequestConfig(request, paginate={"per_page": 1}).configure(table)
...

那么我的table(#3)会显示当前分页和多余的1 of 2 persons.

我应该在代码中更改什么以从分页区域中删除数据系列的总数(删除 2 persons1 of 2 persons)并强制显示当前页码,即使table 有一页(即使 table #1 与 table #2 相同)?

我正在使用:

如果您查看默认页面模板(例如@https://github.com/bradleyayers/django-tables2/blob/master/django_tables2/templates/django_tables2/table.html),您将看到以下两个块:

{% if table.page.has_previous or table.page.has_next %}
    {% block pagination.current %}
        <li class="current">
            {% blocktrans with table.page.number as current and table.paginator.num_pages as total %}Page {{ current }} of {{ total }}{% endblocktrans %}
        </li>
    {% endblock pagination.current %}
{% endif %}

....
{% block pagination.cardinality %}
    <li class="cardinality">
        {% if total != count %}{% blocktrans %}{{ count }} of {{ total }}{% endblocktrans %}{% else %}{{ total }}{% endif %} {% if total == 1 %}{{ table.data.verbose_name }}{% else %}{{ table.data.verbose_name_plural }}{% endif %}
    </li>
{% endblock pagination.cardinality %}

第一个块检查 table 是否有多个页面并显示页码 - 所以如果您想始终显示页码,您应该取消检查。另一个块显示项目的数量 - 所以你可以直接丢弃它。

现在,要覆盖 table 模板,有两种方法:

  • 为您站点上的所有 django-tables2 tables 全局覆盖 table 模板:在您的应用程序中(或您的全局模板目录) ) 添加一个名为 django_tables2/table.html 的文件,然后从 django_tables2 的源中复制 table.html - 当然要进行上述编辑。那么你所有的 table 都将使用新模板。

  • 仅覆盖一个模板:将我上面提到的 table.html 源复制到不同的地方(例如 mytable.html),然后使用该模板呈现您的 table 通过将它传递给模板标签,例如 {% render table "mytable.html" %} (https://django-tables2.readthedocs.io/en/latest/pages/template-tags.html#render-table)