Объект не повторяется с пагинацией Джанго - PullRequest
2 голосов
/ 28 июля 2010

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

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()

Есть идеи, что может вызвать это?

Ответы [ 4 ]

2 голосов
/ 04 апреля 2013

Для всех, кто наткнулся на этот пост:

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

{% for page_num in paginator.page_range %}
2 голосов
/ 28 июля 2010

pages переменная - это число страниц, которое является целым числом и, следовательно, ошибкой: объект 'int' не может быть повторен

вы должны зацикливаться на page_range

{% for page in page_range %}
2 голосов
/ 22 декабря 2011

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

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

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

1 голос
/ 28 июля 2010

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

Нигде не вижу в вашем коде.

...