Для обработки нажатия собственной кнопки в админке Django, вам потребуется выполнить несколько шагов.
Шаг 1: Создать действие в административной модели
Сначала вам нужно определить действие, которое будет выполняться при нажатии кнопки. Для этого навигируйтесь к вашей административной модели, которую вы хотите расширить, и определите свое действие. Например, если у вас есть модель MyModel
, вам необходимо создать новый метод в ее административном классе:
from django.contrib import admin class MyModelAdmin(admin.ModelAdmin): def my_custom_action(self, request, queryset): # Ваш код для обработки нажатия кнопки pass actions = ['my_custom_action']
Шаг 2: Определить URL-маршрут для обработки нажатия кнопки
Теперь вам нужно определить URL-маршрут, который будет обслуживать нажатие кнопки. Для этого создайте новый admin
URL-маршрут в файле urls.py
вашего Django-приложения:
from django.urls import path from .views import my_custom_action_view app_name = 'admin' urlpatterns = [ # Другие URL-маршруты админки Django здесь... path('my_model/my_custom_action/', my_custom_action_view, name='my_custom_action'), ]
Шаг 3: Определить представление для обработки нажатия кнопки
Теперь вам нужно определить представление (view), которое будет вызываться при нажатии кнопки. Создайте новое представление Django в файле views.py
вашего Django-приложения:
from django.http import HttpResponse def my_custom_action_view(request): # Ваш код для обработки нажатия кнопки return HttpResponse('Действие выполнено успешно.')
Шаг 4: Подключить представление в админке
Наконец, чтобы связать ваше действие с кнопкой в админке Django, вам нужно добавить ссылку на ваш URL-маршрут в шаблоне административного класса. В файле admin.py
вашего Django-приложения:
from django.contrib import admin class MyModelAdmin(admin.ModelAdmin): def my_custom_action(self, request, queryset): # Ваш код для обработки нажатия кнопки pass actions = ['my_custom_action'] def get_urls(self): urls = super().get_urls() my_urls = [ path('my_custom_action/', self.admin_site.admin_view(my_custom_action_view), name='my_custom_action'), ] return my_urls + urls
Это все! Теперь, когда вы запустите ваше Django-приложение и зайдете в админку, вы увидите новую кнопку "My Custom Action" в списке доступных действий для MyModel
. При нажатии на эту кнопку будет вызываться ваше представление my_custom_action_view
, которое выполняет определенную вами логику.
Обратите внимание, что в представлении my_custom_action_view
и методе my_custom_action
есть возможность обратиться к объектам, выбранным в админке (например, их идентификаторам или другим полям), используя queryset
. Это позволяет вам выполнять различные операции с выбранными объектами.
Также, не забудьте запустить миграции, если необходимо, чтобы изменения начали действовать.