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

咨询ModelAdmin的change URL使用示例及文档内容解析

Django ModelAdmin Change URL 问题解答

1. ModelAdmin Change URL 使用示例及调用结果

代码层面生成URL

在Python代码(比如视图、信号处理逻辑)中,可通过reverse函数生成指定模型实例的编辑URL:

from django.urls import reverse

# 示例:编辑polls应用中id为1的Choice实例
choice_id = 1
# 方式1:位置参数传递实例ID
change_url = reverse('admin:polls_choice_change', args=[choice_id])
# 方式2:关键字参数传递实例ID
change_url = reverse('admin:polls_choice_change', kwargs={'object_id': choice_id})

生成的URL格式通常为 /admin/polls/choice/1/,具体路径取决于你的AdminSite配置。

模板中生成URL

在Django模板里,可直接用模板标签生成:

<!-- 假设模板上下文包含choice实例 -->
<a href="{% url 'admin:polls_choice_change' choice.id %}">编辑该选项</a>

调用URL后的结果

访问生成的URL后,会进入Django Admin的模型实例编辑页面:

  • 页面渲染该实例的配置字段表单(字段由ModelAdmin的fields/fieldsets定义),并预填实例当前的数据库数据。
  • 顶部提供操作按钮:保存、保存并继续编辑、保存并添加另一个、删除。
  • 提交表单后,数据库中对应实例的数据会更新;根据点击的按钮,会重定向到模型列表页、当前编辑页或新增实例页。

2. 官方文档内容解析

这将找到admin应用的第一个已注册实例(无论实例名称是什么),并解析为该实例中用于修改poll.Choice实例的视图。

这段内容针对Django多AdminSite实例场景,拆解说明:

  • admin应用的第一个已注册实例:Django允许创建多个AdminSite实例(比如默认的admin.site,以及自定义的custom_admin = AdminSite(name='custom_admin'))。系统会按注册顺序取第一个实例——默认情况下就是Django自动创建的admin.site,除非你在它之前注册了自定义实例。
  • 无论实例名称是什么:不管这个AdminSite实例的name参数设置为何值(比如默认的admin,自定义的backend_admin),只要它是第一个被注册的,就会被选中用于生成URL。
  • 解析为该实例中用于修改poll.Choice实例的视图:最终生成的URL会指向这个AdminSite实例下,poll应用中Choice模型的编辑视图(对应Django内部的change_view方法),也就是该Admin实例管理的Choice模型编辑页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 00:40:44