对模板中的对象进行排序 [英] Sorting objects in template
本文介绍了对模板中的对象进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
让这些模型:
class Category(models.Model):
name = models.CharField(max_length=20)
class Word(models.Model):
name = models.CharField(max_length=200)
votes = models.IntegerField(default=1)
categories = models.ManyToManyField(Category, null=True, blank=True)
此视图:
def main_page(request):
words = Word.objects.all()
categories = Category.objects.all()
return render(request, "main_page.html", {'words': words})
和这个模板:
{% for category in categories %}
{% for word in category.word_set.all %}
<p>{{ word }}</p>
{% endfor %}
{% endfor %}
我想分别按投票数和发布日期对模板中的字词进行排序.我该怎么做?
I'd like to sort words in template by number of votes and by pub date, separately. How can I do this?
推荐答案
您可以制作 自定义模板标签或过滤器,获取词组和排序类型作为参数.
You can make custom template tag or filter, which gets words set and sorting type as parameters.
例如(尚未测试):
custom_tags.py:
from django import template
register = template.Library()
@register.filter
def sort_by(queryset, order):
return queryset.order_by(order)
template.html
{% load custom_tags %}
...
{% for word in category.word_set.all|sort_by:'-votes' %}
<p>{{ word }}</p>
{% endfor %}
...
这篇关于对模板中的对象进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文