Django 1.7では、管理モデルのresponse_delete
メソッドをオーバーライドして削除後にカスタムURLに強制的にリダイレクトすることができます。Django adminはオブジェクトの削除後に親にリダイレクトする
class MyAdmin(admin.ModelAdmin):
def response_delete(self, request, obj_display, obj_id):
return HttpResponseRedirect("my_url")
私はさらに一歩これを取ると、それはかなり一般的なユースケースでなければなりませんように思える削除されたオブジェクトの親、にリダイレクトする必要があります。
ただし、オブジェクトの削除により、親IDを取得するためのobj
はありません。私が見つけた
ハックソリューションは、それを見つけるために、文字列を解析し、その後、子オブジェクト(obj_display
)のUnicode表現に親IDを渡すことでした:
obj_display = '1 (Product 123)'
integers = re.findall(r'\d+', obj_display)
product_id = int(integers[1])
product_id = 123
はしかし、これは洗練解決策のように思えます。たとえば、オブジェクトのUnicodeメソッドが変更された場合、リダイレクトが中断する可能性があります。より良い方法がありますか? 「親」と「子」によって
編集
私は削除(「子」)を意味し、オブジェクトが別のオブジェクト(その「親」)
あなたが「削除されたオブジェクトの親」とは何を意味するのですか? – trinchet
私は、削除されたオブジェクトが別のオブジェクトへの外部キーを持っていることを意味します。それはその親です。 –