2016-03-09 5 views
0

позволяет сказать, что на мой взгляд выглядит следующим образом:Как сломать набор запросов Django в шаблоне, а затем повторить?

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

Я хочу сделать что-то вроде этого:

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> 

Короче говоря, я хочу, чтобы сломать мой query-set в более мелкие группы по 3, а затем перебирать их. Есть ли простой способ сделать это?

+0

Я не уверен, что этот тип нарезки работает в шаблонах. Вам нужно будет использовать фильтр ['slice'] (https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#slice). – AKS

ответ

1

Вы можете использовать forloop.counter и divisibleby для достижения этой цели:

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

С другой стороны, следует разбить на группы QuerySet в представлении и передавая группы к шаблону в качестве новой переменной контекста.

Смежные вопросы