Как переопределить поведение кнопки "Просмотр на сайте" в панели администратора?

#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 остается нерешенной.

Есть ли какой-нибудь встроенный способ справиться с этим? И что еще можно сделать?

Вернуться на верх