Django admin. Как перенаправить ссылку на класс модели для открытия первого объекта?

У меня есть модель в django это модель 'Slogan'. Я ограничил ее только 1 объектом из админки:

def has_add_permission(self, request):
    if len(Slogan.objects.all()) == 1:
        return False
    return True

Мое представление на главной странице будет создавать первый объект при загрузке страницы, если в базе данных нет объекта slogan.

Я хочу сделать так, чтобы когда я открываю админку и нажимаю на левую сторону, где находится Slogan, открывался первый объект этого класса напрямую, вместо того, чтобы видеть список с объектами справа и выбирать его оттуда.

Я пробовал метод get_url() из админки, но это, похоже, для конкретных объектов.

Если вы хотите перенаправлять на первый объект вида/формы изменений вместо вида списка изменений в modeladmin, то переопределите метод changelist_view() и обрабатывайте при условии first object exists or not.

class YourAdminClass(admin.ModelAdmin):
    ...
    def changelist_view(self, request, extra_context=None):
        extra_context = extra_context or {}
        first_obj = self.model.objects.first()
        if first_obj is not None:
            return redirect(reverse('admin:<app_label>_<model_name>_change', args=(first_obj.pk,)))
        return super().changelist_view(request, extra_context)
Вернуться на верх