L'une des façons de limiter les objets consiste à ajouter une limitation à une fonction comme celle-ci
def ten_objects():
obj = Model.objects.all()[0:10] # limit to 10
return {'objects': obj}
Cependant, comment pouvez-vous y parvenir à l'intérieur d'un modèle plutôt qu'à l'intérieur d'une vue?
Je sais que vous pouvez filtrer les objets dans un modèle et limiter les caractères, mais comment limiter la quantité d'objets affichés dans une boucle. Via le modèle. par exemple, le code suivant fera une boucle à travers tous les objets ....
<ul>
{% for new in news %}
<li>
<p>{{ news.title }}</p>
<p>{{ news.body }}</p>
</li>
{% endfor %}
</ul>
Comment briser la boucle, disons après les 3 premiers objets/objets. Et comment puis-je le faire à l'intérieur du modèle. Merci d'avance.
Il existe un filtre slice
que vous pouvez utiliser dans les modèles. Cela fonctionne exactement comme la découpe dans la vue.
{% for new in news|slice:":10" %}
Vous souhaitez utiliser le filtre de modèle slice
Voici votre exemple modifié pour l'utiliser:
<ul>
{% for new in news|slice:":3" %}
<li>
<p>{{ new.title }}</p>
<p>{{ new.body }}</p>
</li>
{% endfor %}
</ul>