2010-07-28 4 views
2

У меня есть шаблон, показывающий список событий. Чтобы подготовить список событий, я использую общие представления и задаю параметр «paginate_by». Как ни странно, когда я загружаю мою страницу я вижу:Объект не повторяется с разбиением на страницы django

TemplateSyntaxError at /event/latest/ 
Caught an exception while rendering: 'int' object is not iterable 

в 9-й строке шаблона pagination.html:

{% if is_paginated %} 
{% load i18n %} 
<div class="pagination"> 
    {% if page_obj.has_previous %} 
     <a href="?page={{ page_obj.previous_page_number }}{{ getvars }}" class="prev">&lt;&lt; Prev</a> 
    {% else %} 
     <span class="disabled prev">&lt;&lt; Prev</span> 
    {% endif %} 
#here {% for page in pages %} 
     {% if page %} 
      {% ifequal page page_obj.number %} 
       <span class="current page">{{ page }}</span> 
      {% else %} 
       <a href="?page={{ page }}{{ getvars }}" class="page">{{ page }}</a> 
      {% endifequal %} 
     {% else %} 
      ... 
     {% endif %} 
    {% endfor %} 
    {% if page_obj.has_next %} 
     <a href="?page={{ page_obj.next_page_number }}{{ getvars }}" class="next">Next &gt;&gt;</a> 
    {% else %} 
     <span class="disabled next">Next &gt;&gt;</span> 
    {% endif %} 
</div> 
{% endif %} 

Вот мое мнение:

def events_nearest(request): 
    events = Event.nearest.all() 

    return object_list(request, 
      queryset = events, 
      extra_context = {'title': 'Nearest events'}, 
      paginate_by = 12, 
      template_name = 'event/events_date.html') 

И модель:

class NearestManager(models.Manager): 
    def get_query_set(self): 
     return super(NearestManager, self).get_query_set().order_by('-data') 

class Event(models.Model):   
    category = models.ForeignKey(Category) 
    title = models.CharField(max_length=120) 
    slug = models.SlugField(max_length=255, unique=True, verbose_name='Slug') 
    about = models.TextField() 
    city = models.ForeignKey(City) 

    objects = models.Manager() 
    nearest = NearestManager() 

Любые идеи, использовать это ?

+0

Предположительно pagination.html обрабатывается специальным тегом шаблона. Пожалуйста, вы можете показать код для этого тега. –

ответ

1

В вашей ошибке строки # 9 {% for page in pages %} что именно является pages

Не можете увидеть его в коде в любом месте.

+0

странно. Тот же код работал безупречно ... спасибо за помощь. –

1

pages переменное количество страниц, которое ИНТ и, следовательно, ошибка: «INT» объект не Iterable

вы должны быть зацикливанием над page_range

{% for page in page_range %} 
1

Я встретил ту же самую ошибку. Существует примечание в https://docs.djangoproject.com/en/dev/topics/pagination/

Изменено в версии Django развития: Раньше вы должны были бы использовать {% for contact in contacts.object_list %}, так как объект Page не итерацию.

Возможно, что {% for page in pages.object_list %} может решить вашу проблему.

1

Для кого наткнулся на этот пост:

Как Django 1.4 и более поздней версии (насколько я знаю), то итерацию объект для пагинацией теперь paginator.page_range, т.е. цикл должен быть

{% for page_num in paginator.page_range %} 

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

  • Нет связанных вопросов^_^