Własne akcje w panelu admina Django

Począwszy od Django 1.1 w panelu admina Django dla aplikacji można definiować akcje jakie wykonywane są na zaznaczonych elementach. Standardowo mamy dostępną akcję kasowania:
django-akcje1
Żeby stworzyć własną akcję w pliku admin.py danej aplikacji definiujemy funkcję postaci:
def confirm_selected(modeladmin, request, queryset):
    # tutaj kod funkcji
    # np. zmienić wartość jakiejś flagi wszystkich zaznaczonych elementów:
    queryset.update(confirmed=True)

# nazwa akcji
confirm_selected.short_description = "Zatwierdź kamery"
Następnie przypisujemy taką funkcję do danego modelu poprzez klasę ModelAdmin:
class CameraAdmin(admin.ModelAdmin):
	#...
	actions = [confirm_selected]
Nasza własna akcja będzie dostępna na liście elementów:
django-akcje2
Oprócz zmieniania wartości prostych flag możemy wykonać bardziej złożone operacje na zaznaczonych elementach - można z obiektu "queryset" pobrać ID zaznaczonych wpisów i przekazać je poprzez przekierowanie na inny widok, który wyświetli np. formularz wykorzystujący nadesłane identyfikatory elementów.
RkBlog

Django, 3 May 2010

Comment article
Comment article RkBlog main page Search RSS Contact