Как переопределить поведение кнопки "Просмотр на сайте" в панели администратора?
#model
class Example(models.Model):
name = models.CharField(max_length=255)
slug = models.SlugField(max_length=255, unique=True, blank=True)
def __str__(self) -> str:
return self.name
def get_absolute_url(self):
return '/example/{}/'.format(self.slug)
По умолчанию кнопка "просмотр на сайте" открывает страницу в той же вкладке и под тем же доменом.
Я хочу, чтобы страница открывалась в новой вкладке и под другим доменом, потому что домен сайта django - admin.domain.com
, а основной сайт - domain.com
.
Я хочу, чтобы он перенаправлял на домен domain.com
.
Я могу сделать это:
from core.settings import BASE_URL # BASE_URL = 'domain.com'
#model
class Example(models.Model):
name = models.CharField(max_length=255)
slug = models.SlugField(max_length=255, unique=True, blank=True)
def __str__(self) -> str:
return self.name
def get_absolute_url(self):
return '{}/example/{}/'.format(BASE_URL, self.slug)
Но таких моделей много.
Другой вариант - переопределить метод, используемый для разрешения модели и объекта.
#orignal
path(
"r/<int:content_type_id>/<path:object_id>/",
wrap(contenttype_views.shortcut),
name="view_on_site",
),
#override
path(
"r/<int:content_type_id>/<path:object_id>/",
wrap(customized_shortcut),
name="view_on_site",
),
Пока цель _blank остается нерешенной.
Есть ли какой-нибудь встроенный способ справиться с этим? И что еще можно сделать?