Как вы ограничиваете get_next_by_FOO в представлении Django? код включен - PullRequest
0 голосов
/ 27 октября 2010

Я использовал get_next_by_FOO внутри своего представления, чтобы отобразить абсолютный URL для следующего элемента в наборе записей, однако, когда он достигает конца набора запросов, возникает ошибка.

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

Вся помощь очень ценится.

Вот сообщение об ошибке, мой взгляд и код шаблона.

Ошибка

    Exception Type:     DoesNotExist
    Exception Value:    Body matching query does not exist.

Просмотр

def news_view(request, url):
news = get_object_or_404(Body, url=url)
next = news.get_next_by_published()
pre = news.get_previous_by_published()
return render_to_response('news/news_view.html', {
    'news': news,
    'pre': pre,
    'next': next
}, context_instance=RequestContext(request))

Шаблон

    <a href="{{ next.get_absolute_url }}">Next News</a></p>
    <a href="{{ pre.get_absolute_url }}">Previous News</a></p>

Ответы [ 2 ]

4 голосов
/ 04 сентября 2011

Я делаю это:

def news_view(request, url):
    news = get_object_or_404(Body, url=url)
    return direct_to_template(request, 'news/news_view.html', {'news': news,})

Шаблон:

{% with news.get_previous_by_pub_date as prev %}
   {% if prev %}
       <a class="left btn" href="{{ prev.get_absolute_url }}">Previous News</a>
   {% endif %}
{% endwith %}
{% with news.get_next_by_pub_date as next %}
    {% if next %}
        <a class="right btn" href="{{ next.get_absolute_url }}">Next News</a>
    {% endif %}
{% endwith %}
4 голосов
/ 27 октября 2010

Ответ грубой силы:

def news_view(request, url):
    news = get_object_or_404(Body, url=url)
    try:
        next = news.get_next_by_published()
    except Body.DoesNotExist:
        next = None
    try:
        pre = news.get_previous_by_published()
    except Body.DoesNotExist:
        pre = None
    return render_to_response('news/news_view.html', {
        'news': news,
        'pre': pre,
        'next': next
        }, context_instance=RequestContext(request))

Шаблон:

{% if next %}<a href="{{ next.get_absolute_url }}">Next News</a></p>{% else %}<span class="disabled">At Last Item</span>{% endif %}
{% if pre %}<a href="{{ pre.get_absolute_url }}">Previous News</a></p>{% else %}<span class="disabled">At First Item</span>{% endif %}
...