Django Admin反向URL报错求助:同应用内模型跳转失败
Django Admin reverse跳转URL找不到错误修复
问题场景
在jobs_xml应用的Django Admin中,尝试从CountJobBoardErrors模型页面创建跳转到JobBoardExterne模型的链接时,调用reverse('admin:jobs_xml_jobboardexterne')触发URL找不到错误。当前页面路径为admin/jobs_xml/countjobboarderrors/,已确认jobs_xml应用已在settings.py中注册,项目urls.py也正确配置了admin路由。
出错代码
class CountJobBoardErrorsAdmin(admin.ModelAdmin): list_display = ("have_error_job_board", "have_not_error_job_board", "total_job_board") def have_error_job_board(self, obj): url = reverse('admin:jobs_xml_jobboardexterne') return mark_safe(f'<a href={url}>{JobBoardExterne.objects.count()}</a>')
解决方案
Django Admin的URL命名必须包含动作动词,正确的reverse命名格式为admin:<app_label>_<model_name>_<action>。针对跳转到模型列表页的场景,需要添加changelist动作后缀。
修改后的代码
class CountJobBoardErrorsAdmin(admin.ModelAdmin): list_display = ("have_error_job_board", "have_not_error_job_board", "total_job_board") def have_error_job_board(self, obj): # 补充changelist动作,对应JobBoardExterne模型的列表页URL url = reverse('admin:jobs_xml_jobboardexterne_changelist') return mark_safe(f'<a href={url}>{JobBoardExterne.objects.count()}</a>')
常见Admin URL动作后缀说明
changelist:模型的列表页面(即你要跳转的页面)add:模型实例的添加页面change:模型实例的编辑页面(调用时需传入对象ID参数,如reverse('admin:jobs_xml_jobboardexterne_change', args=[obj.id]))delete:模型实例的删除页面(调用时需传入对象ID参数)
内容的提问来源于stack exchange,提问作者jordan
相关产品推荐
相关产品推荐

