为什么即使没有对象在db中,django paginator.num_pages也会返回一个?

Apo*_*los 6 python django pagination django-templates django-views

我想为我的模型创建一个paginator但我希望只有在我的db中保存模型时才会出现分页.

我试过我的模板

{% if page.paginator.num_pages != 0 %}
    #show pagination ul
{%endif%}
Run Code Online (Sandbox Code Playgroud)

但没有奏效.显然,创建时的paginator对象总是有一个页面,即使objlist中没有任何对象.我不得不使用object_list.count()方法解决这个问题

{% if page.object_list.count != 0 %}
    #show pagination ul
{% endif %}
Run Code Online (Sandbox Code Playgroud)

我没有足够的数据来测试它,但这是正确的方法吗?还有另一个可能更好吗?

Ala*_*air 5

如果paginator被实例化allow_empty_page=True,那么即使没有对象,它也会有一个页面.有关详细信息,请参阅paginator文档.

如果要在对象列表中至少有一个对象时显示分页符,请使用:

{% if page.object_list.count %}
    #show pagination ul
{% endif %}
Run Code Online (Sandbox Code Playgroud)

如果您只希望在有多个页面时显示分页符,请使用:

{% if page.paginator.num_pages > 1 %}
    #show pagination ul
{%endif%}
Run Code Online (Sandbox Code Playgroud)