使用PK获取上一个/下一个项目

时间:2019-02-13 00:16:44

标签: python django django-class-based-views

views.py

class ContentView(TemplateView):
    model = Content
    template_name = 'capt/pages/details.html'

    def get_context_data(self, pk, **kwargs):
        context = super().get_context_data(**kwargs)
        context['dataC'] = get_object_or_404(Content, title_id =self.kwargs.get('pk'))
        return context

所以,我想获取模型的下一个对象:

class Section(models.Model):
    name = models.CharField(max_length=80, unique=True)

    def get_absolute_url(self):
        return reverse("media", kwargs={"pk":self.pk})

    def __str__(self):
        return self.name

    class Meta:
        ordering = ["-pk"]

但是我对CBV不熟悉。我通过覆盖get_context_data来创建了动态网址,但是现在idk如何使用pk获取下一个或上一个对象。

我想使用:

context['previtem'] = Content.objects.get(pk=self.pk-1)

会帮我的忙,但我对此有点stuck依。

1 个答案:

答案 0 :(得分:0)

欢迎使用StackOverflow!这里的一种选择是在Content之类的某些字段上对name进行排序。从该排序列表中,找到当前实例的索引i,然后获取实例i-1的PK。如果您有很多潜在的问题,这不是一个好答案,但是,如果您只是在学习,那是一个好的开始。