如何撤消管理操作的URL?

时间:2018-03-21 14:15:42

标签: django django-admin

我发布这个是因为我搜索了stackoverflow和docs很长一段时间没有找到答案 - 希望这有助于某人。

问题是,出于测试目的,如何找到与特定模型的管理操作相关的URL?

管理模型网址可以全部由reverse(admin:appname_modelname_*)找到,其中*是操作(更改,删除等)。但我找不到一个用于管理操作,因为我正在定义自定义操作,所以我想获取网址。

3 个答案:

答案 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

因此,我们可以反转批量视图

  • 使用args:reverse("admin:<app_label>_<model_name>_actions", args=["foo"])
  • 使用怪兽:reverse("admin:<app_label>_<model_name>_actions", kwargs={"tool": "foo"})

反转对象视图:

  • 使用args: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 字段中指定。