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

时间:2011-11-02 19:44:58

标签: python django django-admin

如何查找任意模型的管理员更改网址?

如果我知道模型,我可以通过以下方式获取网址:

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

我在模型上有一个通用外键,我想在admin中为对象的相应更改页面提供一个链接。由于它可以是任何类型的模型,我不能轻易使用reverse()。有什么方法我可以简单地对下面这个吗?

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

1 个答案:

答案 0 :(得分:5)

获得对象后,您可以在其_meta类上访问其应用标签和名称,然后动态构建管理员更改网址的名称。

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

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