从 admin url 模式访问 Django 模型名称

Access Django model name from admin url pattern

鉴于url喜欢:

http://127.0.0.1:8000/admin/foo/bar/

如何使用 request.resolver_match.kwargs 从请求中访问 bar 变量?

管理员也给了什么 kwarg bar?

尝试了不同的键,例如 classcontent_typeslugmodel,但其中 none 有效。

编辑:

似乎正确的 kwarg 是 model_name,它正在返回 None,但是。我设法使用以下方法提取模型名称:

request.resolver_match.url_name.split('_')[1]

但是不知道有没有更直接的方法

那应该只是应用标签。如果您正在点击 url,那么您就在 ModelAdminclass 中。要从 ModelAdmin 访问应用标签(问题示例中的 foo),您可以执行 self.model._meta.app_label,因此您不需要通过请求。

您可以使用 self.modelModelAdmin 中访问模型(示例中的栏)。

模型名称不会直接出现在 request 对象中,除非您将它放在那里。您可以从 request.path.strip('/').split('/')[-1]request.resolver_match.url_name.split('_')[1]

中获取