参考链接:
解决方案
我最后发现,我是因为在 form.save() 方法中,为了先获得对象,添加部分属性后再自己手动 save() ,所以带了参数 commit=False 。结果自己 save() 后,对象的多对多关系没有保存下来。
解决方法一:
先创建base实例,再实例化form表单,然后直接调用form的save方法,就可以存储完整的对象(包括多对多关系)。
task_base = Task(task_user=request.user, task_plan_time=timezone.now())
task_form = forms.TaskForm(request.POST,instance=task_base)
task_form.save()
解决方法二:
如果要使用 commit=False 参数,在save 后,手动调用save_m2m方法绑定多对多关系。
task = task_form.save(commit=

在Django中遇到ModelForm保存时多对多关系丢失的问题,解决方案包括:1) 先创建base实例,再实例化form并调用save();2) 使用`commit=False`后手动调用`save_m2m()`绑定关系。问题源于`commit=False`时,必须先保存父对象才能保存m2m关系。
最低0.47元/天 解锁文章
385

被折叠的 条评论
为什么被折叠?



