如何查找任意模型的管理员更改网址?
如果我知道模型,我可以通过以下方式获取网址:
>>> 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/
答案 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,))