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

Django含外键模型的UpdateView反向解析错误求助

问题解决步骤

1. 修复URL配置错误

你的project_note_comment_update URL存在语法错误,且参数数量与模板传递的参数不匹配。将URL配置修改为:

path('project/<int:project_pk>/note/<int:note_pk>/comment/<int:comment_pk>/update/', ProjectNoteCommentUpdateView.as_view(), name='project_note_comment_update'),
  • 这里定义了三个参数:project_pk(项目ID)、note_pk(笔记ID)、comment_pk(评论ID),和模板中传递的三个参数完全对应。
  • 原URL中的comment:pk是语法错误,Django URL参数必须遵循<类型:参数名>的格式。

2. 修正ProjectNotesDetailView的成功跳转路径

原get_success_url传递了重复的笔记ID,需改为传递项目ID和笔记ID:

def get_success_url(self):
    return reverse('company_project:project_note_detail', args=[self.object.project.pk, self.object.id])
  • self.object.project.pk获取当前笔记关联的项目ID,self.object.id是笔记ID,与project_note_detail的URL参数匹配。

3. 修正ProjectNoteCommentUpdateView的配置

3.1 指定主键参数

由于URL中评论的主键参数是comment_pk,需要告诉UpdateView使用该参数查找评论:

class ProjectNoteCommentUpdateView(UpdateView):
    model = ProjectNoteComments
    template_name = 'company_accounts/update_project_note_comment.html'
    fields = ['body']
    pk_url_kwarg = 'comment_pk'  # 新增:指定用comment_pk作为主键参数

3.2 修正成功跳转路径

跳转回笔记详情页需要项目ID和笔记ID,需从当前评论关联的笔记中获取:

def get_success_url(self):
    project_pk = self.object.projectnote.project.pk
    note_pk = self.object.projectnote.pk
    return reverse('company_project:project_note_detail', args=[project_pk, note_pk])

4. 确认模板URL参数匹配

模板中的URL标签传递的object.project.pk(项目ID)、object.pk(笔记ID)、comment.pk(评论ID)与修改后的URL参数完全匹配,无需调整:

<a href="{% url 'company_project:project_note_comment_update' object.project.pk object.pk comment.pk %}">

完成以上修改后,反向解析错误即可解决,评论更新功能可正常工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:19:24