Ist es möglich, die Methode zu überschreiben verwendet Djangos Admin rufen Bestätigungsseite löschen?

StackOverflow https://stackoverflow.com/questions/1015072

  •  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?

War es hilfreich?

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
scroll top