开发者

How to limit a collection of objects related on a foreign key in Django Templates?

Given is a model called "comment" with a foreign key relationship to a model called "task".

{% for task in tasks %}
  {% for c开发者_运维技巧omment in task.comment_set.all %}
    {{ comment }}
  {% endfor %}
...

What is the best way to limit this to 5 comments like:

Entry.objects.all()[:5]


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


You don't. You should not do "real work" in a template, this breaks the MVC pattern.

Do the real work in the view, and pass the data to the template (using the context dictionary).

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})

You can then iterate over the comments in your template:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜