我在模板中创建了以下for
循环:
{% for task in item.task_set.all %}
<li class="task">
{{ task }}
</li>
{% endfor %}
有没有办法订购task_set。它目前按 ID 订购,但我想按任务名称订购。
如果您对始终按任务名称排序的任务感到满意,请使用排序选项
class Task(models.Model):
name = models.CharField(max_length=50)
class Meta:
ordering = ['name']
如果您想要与模型的默认顺序不同的顺序,您可以在视图中设置任务的顺序,然后tasks
在模板中迭代。
# view
tasks = item.task_set.order_by('name')
# template
{% for task in tasks %}
无法更改模板中的顺序,因为您无法将参数传递给{{ item.task_set.order_by }}
. 如果您确实需要在模板中指定查询集的顺序,则需要编写自定义模板过滤器。