首页 > 解决方案 > 为什么 Django 2.2.1 不调用 get_absolute_url()

问题描述

文档指出,如果get_absolute_url()在模型上定义了方法,则在 Django Admin 中用于“在站点上查看”按钮:

Django 使用 get_absolute_url() 的地方之一是在管理应用程序中。如果一个对象定义了这个方法,对象编辑页面将有一个“现场查看”链接,它将直接跳转到对象的公共视图,由 get_absolute_url() 给出。

经过一段时间的调试,我想知道为什么不调用它。然后我发现在Django的源代码中甚至没有调用它。

https://github.com/django/django/blob/8b3f1c35dd848678225e8634d6880efeeab5e796/django/contrib/admin/options.py#L290

        elif self.view_on_site and hasattr(obj, 'get_absolute_url'):
            # use the ContentType lookup if view_on_site is True
            return reverse('admin:view_on_site', kwargs={
                'content_type_id': get_content_type_for_model(obj).pk,
                'object_id': obj.pk
            })

是虫子吗?

标签: pythondjango

解决方案


推荐阅读