You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django中使用带自定义主键参数名的通用DetailView?

解决方案

当然可以不用把URL里的quiz_id改成默认的pk,只需给ResultsView添加pk_url_kwarg属性,指定它对应URL中的参数名即可:

class ResultsView(generic.DetailView):
    model = Quiz
    pk_url_kwarg = 'quiz_id'

原理说明

DetailView 默认会从URL中读取pk参数作为主键查询依据,当你使用了自定义的参数名称(比如这里的quiz_id),只需要通过pk_url_kwarg属性告诉视图:要使用URL里的quiz_id参数来获取主键值,进而查询对应的Quiz对象。

这样既保留了URL中参数名的描述性,又能正常使用DetailView的默认逻辑,无需额外编写查询代码。

内容的提问来源于stack exchange,提问作者fejyesynb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 07:45:48