如何在Django模板中限制与外键相关的对象集合?

时间:2010-12-30 15:59:40

标签: django django-templates

给定的是一个名为“comment”的模型,它与称为“任务”的模型具有外键关系。

{% for task in tasks %}
  {% for comment in task.comment_set.all %}
    {{ comment }}
  {% endfor %}
...

将此限制为5条评论的最佳方法是:

Entry.objects.all()[:5]

2 个答案:

答案 0 :(得分:1)

你没有。你不应该在模板中做“实际工作”,这会破坏MVC pattern

在视图中完成实际工作,并将数据传递给模板(使用上下文字典)。

def handle_comments(request):
    tasks = Task.objects.all()
    comments = {}
    for task in tasks:
      comments[task] = task.comment_set.all()[:5]
    return render_to_response('commenting.html', {'comments': comments})

然后,您可以迭代模板中的评论:

{% for task, task_comments in comments.items %}{{ task }}{% endfor %}

答案 1 :(得分:1)

{% for task in tasks %}
  {% for comment in task.comment_set.all|slice:"5" %}
    {{ comment }}
  {% endfor %}
{% endfor %}