从管理员网址模式访问Django型号名称

时间:2019-10-09 15:00:46

标签: python django django-admin django-2.2

给出如下网址:

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

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

管理员也给予bar什么样的奖励?

尝试了不同的键,例如classcontent_typeslugmodel,但是它们都不起作用。

编辑

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

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

但是想知道是否还有更直接的方法。

1 个答案:

答案 0 :(得分:1)

那应该只是应用标签。如果您要访问该URL,则您属于ModelAdmin类。要从ModelAdmin访问应用程序标签(问题示例中的foo),您可以执行self.model._meta.app_label,因此您无需处理请求。

您可以使用ModelAdminself.model中访问模型(示例栏中的问题)。

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

获取