Можно ли переопределить метод, используемый для вызова страницы подтверждения удаления администратора Django?
-
06-07-2019 - |
Вопрос
На страницах администратора Django я хотел бы выполнить действие, когда администратор нажимает кнопку «Удалить» для объекта. Другими словами, я хотел бы выполнить некоторый код до того, как появится сообщение " Вы уверены? & Quot; удалить страницу подтверждения.
Я понимаю, что могу переопределить страницу шаблона для этого объекта, но я надеялся на что-то более простое (то есть переопределить метод в модели или форме).
Есть мысли?
Решение
Вы можете переопределить метод ModelAdmin.delete_view ()
, например:
class MyModelAdmin(ModelAdmin):
def delete_view(self, request, object_id, extra_context=None):
# if request.POST is set, the user already confirmed deletion
if not request.POST:
perform_my_action()
super(MyModelAdmin, self).delete_view(request, object_id, extra_context)
Другие советы
Мы можем использовать django.shortcuts.redirect для прерывания удаления, например так:
def check_del(self, object_id):
produkt = Produkt.objects.get(id = object_id)
if produkt.typsklepu_set.all():
return False
else:
return True
def delete_view(self, request, object_id, extra_context=None):
# if request.POST is set, the user already confirmed deletion
if not request.POST and self.check_del(object_id):
return super(ProduktAdmin, self).delete_view(request, object_id, extra_context)
elif request.POST:
return super(ProduktAdmin, self).delete_view(request, object_id, extra_context)
else:
msg = u'Can not delete this object.'
messages.error(request, msg)
return redirect('..')
Не связан с StackOverflow