【发布时间】:2025-12-30 05:45:11
【问题描述】:
从 Django 1.7 开始,可以覆盖 Admin Model 的 response_delete 方法以强制它在删除后重定向到自定义 URL。
class MyAdmin(admin.ModelAdmin):
def response_delete(self, request, obj_display, obj_id):
return HttpResponseRedirect("my_url")
我需要更进一步并重定向到已删除对象的父,这似乎应该是一个相当常见的用例。
但是,由于删除了对象,没有obj 可用于从中获取父 ID。
我找到的 hacky 解决方案是在子对象的 Unicode 表示中传递父 ID (obj_display),然后解析字符串以找到它:
obj_display = '1 (Product 123)'
integers = re.findall(r'\d+', obj_display)
product_id = int(integers[1])
product_id = 123
但是,这似乎是一个不雅的解决方案。例如,如果对象的 unicode 方法更改,重定向可能会中断。有没有更好的办法?
编辑
“父”和“子”是指已删除的(“子”)对象具有另一个对象(其“父”)的外键
【问题讨论】:
-
“被删除对象的父级”是什么意思?
-
我的意思是被删除的对象有一个指向另一个对象的外键,它是它的'父'。
标签: django django-admin