Как создать представление, которое возвращает следующий объект в заданном списке? код включен - PullRequest
2 голосов
/ 27 октября 2010

У меня есть представление, которое отображает информацию об объекте, когда указан правильный URL-адрес, однако я хотел бы создать аналогичное представление, которое возвращает информацию URL-адреса из следующей записи.

Так что, по сути, возьмите информацию из моего первого просмотра, перечислите / упорядочите ее каким-то образом, предпочтительно по дате, и верните записи, расположенные рядом и в списке в предыдущем.

Может кто-нибудь объяснить мне и дать простой пример того, как я это сделаю. Я новичок в Джанго, и я застрял. Вся помощь с благодарностью. Спасибо.

Вот URL моделей и просмотров, которые я использовал

Модель

class Body(models.Model):
    type = models.ForeignKey(Content)
    url = models.SlugField(unique=True, help_text='')
    published = models.DateTimeField(default=datetime.now)
    maintxt = models.CharField(max_length=200)

View

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

URL

url(r'^/(?P<url>[\w\-]+)/$', 'news_view', name="news_view"),

Template

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

1 Ответ

2 голосов
/ 27 октября 2010

добавьте get_absolute_url к вашей модели

class Body:
    #[....]
    def get_absolute_url(self):
        return "/%i/" % self.url # but please rename it to slug

получить следующий URL в представлении (с get_next_by_FOO )

def news_view(request, url):
    #[....]
    try
        next_url = news.get_next_by_published().get_absolute_url()
    except Body.DoesNotExist
        next_url = None
    return #[....] and include next_url

используйте это next_url в своем шаблоне

{% if next_url %}
<a href="{{next_url}}">next</a>
{% endif %}
...