Ist es möglich, die Methode zu überschreiben verwendet Djangos Admin rufen Bestätigungsseite löschen?
-
06-07-2019 - |
Frage
Auf Djangos Admin-Seiten, würde Ich mag, eine Aktion auszuführen, wenn der Administrator auf die Schaltfläche Löschen für ein Objekt klickt. Mit anderen Worten, würde ich einige Codes wie vor ausführen, um die Ankunft auf die „Sind Sie sicher?“ löschen Bestätigungsseite.
Ich weiß, ich könnte die Vorlage Seite für dieses Objekt zu überschreiben, aber ich habe gehofft, für etwas einfacher (das heißt, außer Kraft setzen, ein Verfahren auf dem Modell oder das Formular).
Alle Gedanken?
Lösung
Sie können ModelAdmin.delete_view()
Methode überschreiben, wie:
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)
Andere Tipps
Wir verwenden django.shortcuts.redirect Löschen zu unterbrechen, wie folgt aus:
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('..')
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow