views:

40

answers:

3

One of the ways to limit objects is to add a limitation to a function like this

def ---():
---- = ---.objects.all()[0:10] #limit to 10
return {'objects': objects}

However how do you achieve this inside a template rather than inside a view?

I know you can filter through objects within a template and limit characters but how do you actually limit the amount of objects displayed in a loop. Via the template. for example the following code will loop through all objects....

    <ul>
    {% for new in news %}
    <li>
    <p>{{ news.title }}</p>
    <p>{{ news.body }}</p>
    </li>
    {% endfor %}
    </ul>

How do I break the loop, say after the firs 3 objects/items. And how do I do it inside the template. Thanks in advance.

+1  A: 

slice

Ignacio Vazquez-Abrams
+2  A: 

There is a slice filter that you can use in templates. This works exactly the same as slicing within the view.

{% for new in news|slice:":10" %}
Daniel Roseman
thanks very much
Rick
A: 

You want to use the slice template filter

Here's your example altered to use it:

<ul>
{% for new in news|slice:":3" %}
<li>
<p>{{ news.title }}</p>
<p>{{ news.body }}</p>
</li>
{% endfor %}
</ul>
Chris Heisel