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

Django获取帖子创建用户特定Profile时VectorDetails缺pk报错如何解决

报错修复方案

核心报错原因

你的VectorDetails视图定义了pk作为必填入参,但该视图对应的URL配置中没有添加<int:pk>路径占位符,请求进入时Django无法传递对应参数,直接触发参数缺失报错。同时你的代码存在多处逻辑冗余、写法错误的问题,即使解决参数报错也无法正常获取帖子创建者的Profile信息。

分步修复操作

1. 修正VectorDetails视图逻辑,删除冗余参数与错误代码

你不需要通过URL传递pk参数来查询创建者Profile,直接通过当前帖子vector的外键关联就能拿到对应创建者的Profile数据,修正后的代码如下:

def VectorDetails(request, vectors_slug):
    vector = get_object_or_404(Vectors, slug=vectors_slug)
    vectors = Vectors.objects.filter(status='published').order_by('?')[:6]
    creators = Profile.objects.filter(creator=True)
    # 移除错误的Profile.get_object_or_404写法,该方法是django.shortcuts的内置方法,不是Profile模型的方法
    # 无需单独查询creator,直接通过vector.creator.profile即可拿到关联的Profile对象

    context = {
        'vector': vector,
        'vectors': vectors,
        'creators':creators
    }
    return render(request, 'vector-details.html', context)

同时同步修改VectorDetails对应的URL配置,删除路径中多余的<int:pk>占位符,保持路径仅保留vectors_slug相关配置即可。

2. 修正模板中跳转链接的参数

你原模板中调用的creators.pk是错误的,creators是你传递的所有创作者的查询集,不是单个Profile对象,直接使用当前帖子关联的Profile主键即可:

<h4 class="avater_name_214"><a href="{% url 'creators:creator_profile_detail' vector.creator.profile.pk %}">{{vector.creator|title}}</a></h4>

注意:如果你的User和Profile的OneToOne关联设置了自定义related_name,请将上述代码中的profile替换为你自己设置的关联名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:45:05