Ab Django 1.7 ist es möglich, die Methode response_delete
des Admin-Modells zu überschreiben, um nach dem Löschen eine Umleitung auf eine benutzerdefinierte URL zu erzwingen.Django Admin-Redirect zum übergeordneten Objekt nach dem Löschen des Objekts
class MyAdmin(admin.ModelAdmin):
def response_delete(self, request, obj_display, obj_id):
return HttpResponseRedirect("my_url")
Ich brauche dies noch einen Schritt weiter zu nehmen und auf die Eltern des gelöschten Objekts umleiten, die wie es scheint ein ziemlich häufiger Anwendungsfall sein sollte.
Aufgrund des Löschens des Objekts ist jedoch obj
nicht verfügbar, um die übergeordnete ID abzurufen.
Die hacky Lösung, die ich fand, war die übergeordnete ID in der Unicode-Darstellung des untergeordneten Objekts (obj_display
) zu übergeben, analysieren dann die Zeichenkette, die es zu finden:
obj_display = '1 (Product 123)'
integers = re.findall(r'\d+', obj_display)
product_id = int(integers[1])
product_id = 123
Doch dies scheint wie eine unelegant Lösung . Wenn beispielsweise die Unicode-Methode des Objekts geändert wurde, könnte die Weiterleitung abbrechen. Gibt es einen besseren Weg?
bearbeiten
von ‚Eltern‘ und ‚Kind‘ meine ich das gelöscht (‚Kind‘) Objekt einen Fremdschlüssel zu einem anderen Objekt hatte (seine ‚Eltern‘)
was meinst du mit „das übergeordnete des gelöschten Objekts“? – trinchet
Ich meine das gelöschte Objekt hat einen Fremdschlüssel zu einem anderen Objekt, das ist seine "Eltern". –