gpt4 book ai didi

django - 从 DetailView 获取 pk 以进行 lte/gte 比较(Django)

转载 作者:行者123 更新时间:2023-12-04 07:23:26 31 4
gpt4 key购买 nike

目标:在通过 DetailView 提供的文章页面上实现下一篇文章/上一篇文章功能。将当前文章 pk 与查询集进行比较,以获取下一篇和上一篇文章。
到目前为止,我已经尝试了很多不同的方法,但是我在所有方法上都遇到了错误。

class PostDetail(generic.DetailView):
model = Post
template_name = 'post_detail.html'

def get_context_data(self, **kwargs):
context = super(PostDetail, self).get_context_data(**kwargs)
pk = Post.objects.filter(pk=self.kwargs.get('pk'))
我也试过:
pk = self.kwargs.get('pk')
pk = self.kwargs['pk']
我收到 KeyError关于字典的尝试和 None在获取尝试上。
我无法弄清楚为什么我无法返回文章的 pk 以完成代码。另外,我尝试从 Post 中获取其他数据。模型,有相同的错误。
编辑:
网址:
urlpatterns = [
path('', views.home, name='home'),
path('cars/<slug:slug>', views.categories, name='categories_detail'),
path('<slug:categories_detail>/<slug:slug>', views.PostDetail.as_view(), name='post_detail'),
]

最佳答案

从你的url模式可以看出你使用的是slug获得正确的 Post对象,你永远不会通过 pk到 View 。相反,您可以获得 pk从对象本身:

class PostDetail(generic.DetailView):
model = Post
template_name = 'post_detail.html'

def get_context_data(self, **kwargs):
context = super(PostDetail, self).get_context_data(**kwargs)
pk = self.object.pk
# Your code
return context

关于django - 从 DetailView 获取 pk 以进行 lte/gte 比较(Django),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68356464/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com