在我将网站应用程序添加到我的Django应用程序之前,"在网站上查看"按钮使用了相对路径。这很有用,因为我的网站是通过几个不同的域和一个临时环境访问的。
我最近开始使用Flat Pages应用程序,这导致我也安装了Sites应用程序。
在此更改后,所有"在网站上查看"按钮使用我的应用程序的默认站点中指定的域,而不是相对于访问Django Admin的域的路径。
是否可以覆盖"网站上的视图"按钮(或每个相关模型的get_absolute_url()
函数)忽略站点域,并返回使用相对路径?
答案 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})