如何创建一个返回给定列表中下一个对象的视图?代码包括在内

时间:2010-10-27 11:00:48

标签: django django-models django-views

我有一个视图,在提供正确的URL时显示对象信息,但我想创建一个类似的视图,从下一个记录中返回url信息。

所以实质上从我的第一个视图中获取信息,以某种方式列出/优先按日期排序,并返回列表中下一个和上一个的记录。

有人可以向我解释并提供一个简单的例子说明我将如何做到这一点。我是django的新手,我被困住了。非常感谢所有帮助。感谢。

以下是我使用过的模型网址和视图

模型

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)

查看

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"),

模板

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

1 个答案:

答案 0 :(得分:2)

get_absolute_url添加到您的模型

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

获取视图中的下一个网址(使用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 %}