2

在我将站点应用程序添加到我的 Django 应用程序之前,“在站点上查看”按钮使用了相对路径。这很有帮助,因为我的网站是通过几个不同的域和一个登台环境访问的。

我最近开始使用 Flat Pages 应用程序,这导致我也安装了 Sites 应用程序。

进行此更改后,所有“在站点上查看”按钮都使用在我的应用程序的默认站点中指定的域,而不是相对于访问 Django Admin 的域的路径。

是否可以覆盖“在站点上查看”按钮(或get_absolute_url()每个相关模型的功能)以忽略站点域,并返回使用相对路径?

4

1 回答 1

2

是的,要覆盖“现场查看”按钮,请将 view_on_site 方法添加到您的 ModelAdmin。

来自文档的示例。ModelAdmin.view_on_site

from django.contrib import admin
from django.core.urlresolvers import reverse

class PersonAdmin(admin.ModelAdmin):
    def view_on_site(self, obj):
        return 'http://example.com' + reverse('person-detail',
                                              kwargs={'slug': obj.slug})
于 2015-05-13T00:24:00.787 回答