我的意思是对于有数据的emergency需要勾选后再删除很麻烦,在页面中他的代码是<span class="delete"><input type="checkbox" name="emergency_set-0-DELETE" id="id_emergency_set-0-DELETE"> <label class="vCheckboxLabel inline" for="id_emergency_set-0-DELETE">删除</label></span>,而我希望他变为可以直接删除的按钮,也就是这样的按钮:<span><a class="inline-deletelink" href="#">删除</a></span>
时间: 2023-07-19 16:49:02 浏览: 129
要实现这个功能,你需要在 `EmergencyInline` 类中添加 `can_delete` 属性并将其设置为 `False`,然后在 `StaffInfoAdmin` 类中重写 `delete_model` 方法,在其中设置 `can_delete` 为 `True`。这样当你在编辑 `StaffInfo` 页面时,已经存在的 `Emergency` 实例就可以直接通过点击 "删除" 按钮来删除了。修改后的代码如下所示:
```
class EmergencyInline(admin.StackedInline):
model = Emergency
form = myforms.EmergencyForm
extra = 0
can_delete = False # 设置 can_delete 属性为 False
class StaffInfoAdmin(admin.ModelAdmin):
inlines = [EmergencyInline, BackgroundInline, WorkInline, FamilyInline]
search_fields = ['NAME', 'RES_ID']
list_display = ['NAME', 'BIRTH', 'RES_ID']
list_filter = ['POST']
readonly_fields = ['BIRTH','SEX',]
def delete_model(self, request, obj):
obj.can_delete = True # 设置 can_delete 为 True
obj.delete()
# 确认删除时的提示信息
def delete_view(self, request, object_id, extra_context=None):
response = super().delete_view(request, object_id, extra_context)
if response.status_code == 302:
messages.warning(request, "删除成功!")
return response
```
这样修改后,编辑 `StaffInfo` 页面中的 "Emergency" 部分就会变成可以直接删除的按钮。需要注意的是,这个修改只会影响到 `EmergencyInline` 类中的删除按钮,如果你还有其他的 `Inline` 类需要同样的功能,也需要对这些类进行相应的修改。
阅读全文