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
相关产品推荐
相关产品推荐

