2016-03-09 2 views
0

permet de dire mon point de vue ressemble à ceci:Comment décomposer un ensemble de requêtes Django dans un modèle, puis parcourir?

def index(request): 
    posts = Post.objects.all() 
    return render(request, 'myapp/index.html', {'posts' : posts}) 

Je veux faire quelque chose comme ceci:

index.html

<div> 
    {% for post in posts[:3] %} 
     <p>{{post.text}}</p> 
    {% endfor %} 
</div> 

<div> 
    {% for post in posts[3:6] %} 
     <p>{{post.text}}</p> 
    {% endfor %} 
</div> 

En bref, je veux briser ma query-set en plus petits groupes de 3 et ensuite itérer sur eux. Y a-t-il un moyen facile de faire cela?

+0

Je ne suis pas sûr que ce type de découpage fonctionne dans les modèles. Vous devrez utiliser le filtre ['slice'] (https://docs.djangoproject.com/fr/1.9/ref/templates/builtins/#slice). – AKS

Répondre

1

Vous pouvez utiliser un forloop.counter et divisibleby pour ce faire:

<div> 
    {% for post in posts %} 
     <p>{{post.text}}</p> 
     {% if forloop.counter|divisibleby:3 %} 
      </div><div> 
     {% endfor %} 
    {% endfor %} 
</div> 

Vous pouvez également envisager de scinder le queryset en groupes dans la vue et faire passer les groupes au modèle comme une nouvelle variable de contexte.