Tud*_*dor 12 sorting django django-templates
我有一个QuerySet,如:
items = Item.objects.all()
Run Code Online (Sandbox Code Playgroud)
项目有一个"名称"字段.在我想要显示的模板中:
所以这些物品是按照第一个字母排序和分组的.遗漏的字母被省略.有没有人有任何想法?
Elf*_*erg 19
如果您关心的是它在页面上的显示,那么就有一个模板标签.首先,在课堂上定义组织原则.在你的情况下,这是第一个字母:
class Item(models.Model):
...
def first_letter(self):
return self.name and self.name[0] or ''
Run Code Online (Sandbox Code Playgroud)
然后使用first_letter调用在模板中定义重组:
{% regroup items by first_letter as letter_list %}
<ul>
{% for letter in letter_list %}
<li>{{ letter.grouper }}
<ul>
{% for item in letter.list %}
<li>{{ item.name }}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)
小智 6
只是想补充一点,如果您使用此项并且您的项目具有小写的第一个字符,则它将是一个单独的组.我加了鞋面.
return self.name and self.name.upper()[0] or ''
Run Code Online (Sandbox Code Playgroud)
小智 5
或者,您可以slice在模板中使用内联,而无需first_letter在模型上使用方法.
{% regroup items by name|slice:":1" as letter_list %}
<ul>
{% for letter in letter_list %}
<li>{{ letter.grouper }}
<ul>
{% for item in letter.list %}
<li>{{ item.name }}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4314 次 |
| 最近记录: |