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)