我发布这个是因为我搜索了stackoverflow和docs很长一段时间没有找到答案 - 希望这有助于某人。
问题是,出于测试目的,如何找到与特定模型的管理操作相关的URL?
管理模型网址可以全部由reverse(admin:appname_modelname_*)
找到,其中*是操作(更改,删除等)。但我找不到一个用于管理操作,因为我正在定义自定义操作,所以我想获取网址。
答案 0 :(得分:0)
答案很难找到,是reverse(admin:appname_modelname_changelist)
答案 1 :(得分:0)
这花了很多时间,我在Django文档中找不到关于它的任何内容,最终不得不检查第三方库的源代码。
基本上有2种网址格式,一种用于批量操作,一种用于对象操作:
r'admin/<app_label>/<model_name>/actions/(?P<tool>\\w+)/$'
r'admin/<app_label>/<model_name>/(?P<pk>.+)/actions/(?P<tool>\\w+)/$'
URL名称模式为<app_label>_<model_name>_actions
因此,我们可以反转批量视图:
reverse("admin:<app_label>_<model_name>_actions", args=["foo"])
reverse("admin:<app_label>_<model_name>_actions", kwargs={"tool": "foo"})
和反转对象视图:
reverse("admin:<app_label>_<model_name>_actions", args=[1, "foo"])
reverse("admin:<app_label>_<model_name>_actions", kwargs={"pk": 1, "tool": "foo"})
答案 2 :(得分:0)
所有自定义操作的 URL 为 reverse(admin:<appname>_<modelname>_changelist)
,但操作名称在 POST 数据的 action
字段中指定。