Una de las formas de limitar los objetos es agregar una limitación a una función como esta
def ten_objects():
obj = Model.objects.all()[0:10] # limit to 10
return {'objects': obj}
Sin embargo, ¿cómo se logra esto dentro de una plantilla en lugar de dentro de una vista?
Sé que puede filtrar objetos dentro de una plantilla y limitar caracteres, pero ¿cómo se limita realmente la cantidad de objetos que se muestran en un bucle? A través de la plantilla. por ejemplo, el siguiente código recorrerá todos los objetos ...
<ul>
{% for new in news %}
<li>
<p>{{ news.title }}</p>
<p>{{ news.body }}</p>
</li>
{% endfor %}
</ul>
¿Cómo rompo el bucle, digamos después de los primeros 3 objetos / elementos? ¿Y cómo lo hago dentro de la plantilla? Gracias por adelantado.
slice
</a>Respuestas:
Hay un
slice
filtro que puede utilizar en las plantillas. Esto funciona exactamente igual que cortar dentro de la vista.{% for new in news|slice:":10" %}
fuente
{% for object in user.objects.all %}
, puede usar{% for object in user.objects.all|slice:":10" %}
Desea utilizar la rebanada filtro de plantilla
Aquí está su ejemplo modificado para usarlo:
<ul> {% for new in news|slice:":3" %} <li> <p>{{ new.title }}</p> <p>{{ new.body }}</p> </li> {% endfor %} </ul>
fuente
{{ new.title}}
y{{ new.body }}