在Django Admin中,我如何强制在网站上查看"按钮忽略网站?

时间:2015-05-12 01:30:04

标签: python django django-admin django-sites

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

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

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

是否可以覆盖"网站上的视图"按钮(或每个相关模型的get_absolute_url()函数)忽略站点域,并返回使用相对路径?

1 个答案:

答案 0 :(得分:2)

是的,要覆盖“在网站上查看”按钮,请将view_on_site方法添加到您的ModelAdmin。

来自docs的示例。 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})