You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django TabularInline删除关联对象无效问题求助

解决Django TabularInline删除关联对象无效的问题

问题出在你重写的save_formset方法里——你只处理了新增/更新的HeadFlowDataset实例,完全没处理那些被勾选删除的对象。Django Admin默认的表单集处理逻辑会自动处理删除操作,但自定义save_formset后,这个逻辑被覆盖了,得手动补上。

修改ProductAdmin中的save_formset方法,补充删除对象的处理逻辑:

def save_formset(self, request, form, formset, change):
    # 先处理标记为删除的关联对象
    for obj in formset.deleted_objects:
        obj.delete()
    
    # 处理新增或更新的实例
    instances = formset.save(commit=False)
    for instance in instances:
        instance.user = request.user
        instance.save()
    
    # 保存多对多关系(如果你的模型存在多对多关联,必须加这一步)
    formset.save_m2m()

原理说明

当你在Admin页面勾选Inline对象的删除复选框时,这些对象会被收集到formset.deleted_objects列表中。默认的save_formset会自动遍历这个列表并执行删除,但你重写方法后没保留这个逻辑,导致删除操作不生效。补上这段删除逻辑后,勾选的对象就会被正确删除了。

内容的提问来源于stack exchange,提问作者Vahid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 11:10:25