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

Django仅展示当前用户关联消费记录时报需Profile实例错误如何解决

错误原因

Spend模型的user字段外键关联的是自定义的Profile模型,而request.user是Django内置User模型的实例,类型不匹配导致查询校验失败。

解决方案

修改视图的查询集,通过User和Profile的一对一反向关联拿到当前登录用户对应的Profile实例,再作为过滤条件传入即可。
修改后的视图代码如下:

@login_required
def costs(request):
    # 通过request.user.profile拿到对应Profile实例做过滤
    filter = CostFilter(request.GET, queryset=Spend.objects.filter(user=request.user.profile))
    return render(request, 'users/includes/costs.html', {
        'filter': filter
    })

如果你给Profile和User的一对一关联自定义了related_name参数,把上面代码里的profile替换成你设置的related_name值即可。

可选优化:如果存在部分登录用户未创建对应Profile的场景,可以加判断避免报错

@login_required
def costs(request):
    user_profile = getattr(request.user, 'profile', None)
    queryset = Spend.objects.none()
    if user_profile:
        queryset = Spend.objects.filter(user=user_profile)
    filter = CostFilter(request.GET, queryset=queryset)
    return render(request, 'users/includes/costs.html', {
        'filter': filter
    })

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:24:03