查找任意Django模型的管理员更改URL

4 投票
1 回答
1090 浏览
提问于 2025-04-17 05:31

如何查找任意模型的管理员修改链接?

如果我知道模型的名称,我可以通过以下方式获取链接:

>>> print urlresolvers.reverse('admin:myapp_mymodel_change', args=(obj.id,))
/admin/myapp/mymodel/123/

我在一个模型上有一个通用外键,我想在管理员界面提供一个链接,指向该对象对应的修改页面。因为这个模型可以是任何类型的,所以我不能简单地使用 reverse()。有没有什么办法可以把这个过程简化成下面这样?

>>> get_admin_change_url(obj)
/admin/myapp/mymodel/123/

1 个回答

5

一旦你得到了这个对象,你可以通过它的 _meta 类来获取它的应用标签和名称,然后动态地构建管理员修改网址的名称。

app_label = obj._meta.app_label
model = obj._meta.module_name

reverse('admin:%s_%s_change' % (app_label, model), args=(obj.id,))

撰写回答