使用 PK 获得 Previous/Next 项
Get Previous/Next item by using PK
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 创建了动态 url,但现在不知道如何使用 pk 获取下一个或上一个对象。
我想使用:
context['previtem'] = Content.objects.get(pk=self.pk-1)
会帮助我,但我有点卡在这个上面。
欢迎使用 Whosebug!这里的一个选项是在某些字段上对 Content
进行排序,例如 name
。从那个排序列表中,找到当前实例的索引 i
,然后得到实例 i-1
的 PK。如果您的清单可能很大,那么这不是一个好的答案,但如果您只是在学习,这是一个好的开始。
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 创建了动态 url,但现在不知道如何使用 pk 获取下一个或上一个对象。
我想使用:
context['previtem'] = Content.objects.get(pk=self.pk-1)
会帮助我,但我有点卡在这个上面。
欢迎使用 Whosebug!这里的一个选项是在某些字段上对 Content
进行排序,例如 name
。从那个排序列表中,找到当前实例的索引 i
,然后得到实例 i-1
的 PK。如果您的清单可能很大,那么这不是一个好的答案,但如果您只是在学习,这是一个好的开始。