我有一个视图,在提供正确的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>
答案 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 %}