Пользовательское действие 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()