python - 使用 PK 获取上一个/下一个项目
问题描述
视图.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)
会帮助我,但我有点坚持这个。
解决方案
欢迎来到 StackOverflow!Content
这里的一个选项是对某些字段进行排序,例如name
. 从该排序列表中,找到当前实例的索引i
,然后获取实例的 PK i-1
。如果您可能有很多事情,这不是一个好的答案,但如果您只是在学习,这是一个好的开始。
推荐阅读
- c# - 带有 System.Threading.Thread 的 WPF 启动画面
- mongodb - Hadoop with MongoDB storage
- php - Problem with json_decode - Syntax error, malformed JSON
- android - ExpandableRecyclerView 与 GridLayoutManager ,垂直扩展父视图
- graphdb - 自定义 sparql 过滤器 Graphdb
- java - NullPointerException 未被捕获
- webpack - 将 PureScript `Pulp repl` 与无 js 文件一起使用
- python - 在 Catplot 中叠加图像
- apache-kafka - 减少 max.spout.pending 值会导致 Storm UI 中 Kafka Spout 中的消息失败?
- android - How to change center alignment in EditText when the password Toggle is Enabled?