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

Django创建模型后跳转详情页报错:UUID无效问题排查

问题原因与解决方案

核心问题:redirect参数传递错误

你代码里的return redirect('daycare_profile_details', context)写法有误,Django的redirect函数在指定视图名称后,需要直接传递位置参数或关键字参数,而非打包成字典传入。这种错误写法导致详情页视图收到的pk是整个字典对象,而非有效的UUID字符串,因此触发“UUID无效”错误。

修复步骤

  1. 修正redirect的参数传递方式
    把传递字典的逻辑改成直接传关键字参数:

    return redirect('daycare_profile_details', pk=new_id)
    # 也可以用位置参数,只要和URL配置里的参数顺序匹配
    # return redirect('daycare_profile_details', new_id)
    
  2. 确认save()后的实例状态
    form.save()执行完成后,form.instance已经是存入数据库的对象,它的pk(如果是UUID类型)已经生成,不需要重新查询数据库。你可以打印new_daycare.pk验证,结果应该是一个有效的UUID对象,转成字符串后可直接用于跳转。

完整修正后的create_daycare_profile视图

def create_daycare_profile(request):
    form = DayCareProfileForm
    if request.method == 'POST':
        form = DayCareProfileForm(request.POST)
        if form.is_valid():
            form.save()
            new_daycare = form.instance
            new_id = str(new_daycare.pk)
            # 直接传递关键字参数pk
            return redirect('daycare_profile_details', pk=new_id)
    context = {'form': form}
    return render(request, 'daycare_profile/create_daycare_profile.html', context)

额外检查点

  • 确认URL配置中daycare_profile_details的规则正确,例如:
    path('daycare/<uuid:pk>/', daycare_profile_details, name='daycare_profile_details')
    
    如果URL里用了<uuid:pk>,那么传递的new_id必须是合法的UUID字符串,str(new_daycare.pk)刚好满足这个要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 00:27:18