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

问题描述 投票:1回答:1

views.朋友

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来创建动态URL,但现在idk如何使用pk获取下一个或上一个对象。

我以为使用:

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

会帮助我,但我对这一点感到困惑。

python django django-class-based-views
1个回答
1
投票

欢迎来到StackOverflow!这里的一个选择是在Content等某些领域对name进行排序。从该排序列表中,找到当前实例的索引i,然后获取实例i-1的PK。如果你有一个可能很大的东西列表,这不是一个好的答案,但如果你刚刚学习它是一个良好的开端。

© www.soinside.com 2019 - 2024. All rights reserved.