我想写一个
的模板li
- 标记包含一个a
- 标记,该标记链接到模型。)这意味着列表不会以1开始。我的模特:
class Mymodel(models.Model):
number = positiveIntegerField()
title = models.CharField(max_length=100)
[...]
number
是唯一的,有序的,当您订购带有编号的模型时,没有间隙; number是从1开始的
我拥有:(reverse
是布尔变量,它告诉列表是否必须反转)
{% if reverse %}
<ol class="content" start="{{ article_list.0.number|add:article_list.count }}" reversed=true>
{% for article in article_list reversed %}
<li class="{% cycle '' '' '' '' 'seperate-bot border-gray' %}"><a href="{% url 'myapp:article' article.number %}">{{ article.title }}</a></li>
{% endfor %}
{% else %}
<ol class="content" start="{{ article_list.0.number }}">
{% for article in article_list %}
<li class="{% cycle '' '' '' '' 'seperate-bot border-gray' %}"><a href="{% url 'manifest:article' article.number %}">{{ article.alt_title }}</a></li>
{% endfor %}
{% endif %}
</ol>
不幸的是,计算后退模板部分是错误的:最后一个数字总是1,它不应该是。最后一个数字应为article_list.0.number
+ article_list.count
(或:article_list|length
) - 1
;或last_list_item.number
会更好。
这意味着:(对于该示例,paginated_by = 3)&#34; |&#34;因为SO改变了我的计数 应该如何:(反向=真)
第1页:
| 3。 lorem ipsum
| 2。 lorem ipsum
| 1。 lorem ipsum
第2页:
| 5。 lorem ipsum
| 4。 lorem ipsum
我得到什么 :(只有第2页不好)
第2页:
| 2。 lorem ipsum
| 1。 lorem ipsum
有没有一种避免这种效果的好方法? (它来自哪里?)最好的情况只能在模板中使用。
答案 0 :(得分:1)
我不确定你为什么会得到那个结果,但这似乎是一种过于复杂的方式来做一些非常简单的事情。
您可以使用内置的(1:5)/(3:5)
过滤器和last
模板标签来访问列表中的最后一项。
with
但是,我建议您在视图功能中而不是在模板中进行排序和反转。 Django的模板语言不适用于非平凡的逻辑。
对于编号,您实际上可以显式地将值属性分配给有序列表元素。这可以解决您的问题。
{% with article_list|last as last_article %}
<ol class="content" start="{{ last_article.number }}" reversed=true>
{% endwith %}
示例:
<li value={{ article.number }} ...
&#13;