Penso che probabilmente stai utilizzando la funzione di eliminazione di massa dell'amministratore e ci stiamo imbattendo nel fatto che il metodo di eliminazione di massa dell'amministratore non chiama delete()
(vedi il relativo ticket).
L'ho già fatto in passato scrivendo un'azione di amministrazione personalizzata per l'eliminazione di modelli.
Se non si utilizza il metodo di eliminazione di massa dell'amministratore (ad esempio, si fa clic sul pulsante Elimina nella pagina di modifica dell'oggetto), succede qualcos'altro.
visualizzato l'avviso here:
L'azione “eliminare gli oggetti selezionati” usa QuerySet.delete()
per l'efficienza motivi, che ha un importante avvertimento: il metodo del vostro modello delete()
non sarà chiamato .
Se si desidera sovrascrivere questo comportamento, è sufficiente scrivere un'azione personalizzata che compie l'eliminazione nella vostra maniera preferita - ad esempio, chiamando Model.delete()
per ciascuno dei elementi selezionati.
Per ulteriori informazioni sulla cancellazione di massa, vedere la documentazione su object deletion.
Il mio modello di amministrazione personalizzato assomiglia a questo:
from photoblog.models import PhotoBlogEntry
from django.contrib import admin
class PhotoBlogEntryAdmin(admin.ModelAdmin):
actions=['really_delete_selected']
def get_actions(self, request):
actions = super(PhotoBlogEntryAdmin, self).get_actions(request)
del actions['delete_selected']
return actions
def really_delete_selected(self, request, queryset):
for obj in queryset:
obj.delete()
if queryset.count() == 1:
message_bit = "1 photoblog entry was"
else:
message_bit = "%s photoblog entries were" % queryset.count()
self.message_user(request, "%s successfully deleted." % message_bit)
really_delete_selected.short_description = "Delete selected entries"
admin.site.register(PhotoBlogEntry, PhotoBlogEntryAdmin)
fonte
2009-09-24 14:14:27
Forse non stai cancellando nulla? Puoi mostrarci cosa stai invocando delete() in? – artagnon
L'ho provato semplicemente eliminando un elemento nell'area di amministrazione e non l'ho chiamato manualmente. – schneck