Пользовательское действие Django 'delete' не срабатывает в представлении списка администратора

У меня есть модель 'notes' в моем приложении Django, где я создал несколько пользовательских действий удаления:

class Note(models.Model):
    [MODEL FIELDS HERE]

    def delete(self, *args, **kwargs):
        [STUFF HEPPENS HERE]
        super(Note, self).delete()

Если я нажимаю на отдельную заметку в админке Django и нажимаю кнопку 'Delete', пользовательские действия по удалению работают отлично, но если я ставлю галочку рядом с заметкой в представлении списка и выбираю 'Delete selected notes' из выпадающего списка, они не работают.

Что я здесь упускаю?

См. ответ @Brian Destura в комментариях выше.

delete selected - это массовое действие, и в целях эффективности Django удаляет весь набор запросов сразу, не вызывая метод delete() на каждом экземпляре модели.

Если вам нужно убедиться, что он будет вызван, например, у вас есть какие-то пользовательские операции, которые не должны быть пропущены, просто переопределите метод delete_queryset в вашем подклассе ModelAdmin следующим образом:

# content of admin.py in your Django app

from django.contrib import admin

class MyModelAdmin(admin.ModelAdmin):
    def delete_queryset(self, request, queryset):
        for obj in queryset.all():
            obj.delete()
Вернуться на верх