作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
嗨,我有一个模型,其中有 2 个多对多字段。一个是标准的 M2M 字段,不使用任何直通表,而另一个则稍微复杂一些,有一个直通表。我正在使用 Django forms.modelform 来显示和保存表单。我必须保存表单的代码是
if form.is_valid():
f = form.save(commit=False)
f.modified_by = request.user
f.save()
form.save_m2m()
当我尝试保存表单时,出现以下错误:
无法在指定中间模型的 ManyToManyField 上设置值。
由于直通表,我知道当我执行 form.save_m2m() 时会发生这种情况。我想做的是告诉 Django 忽略带有 through 表的 m2m 字段,但仍然保存没有 through 表的 m2m 字段。然后我可以继续手动保存直通表字段的数据。
谢谢
最佳答案
如果您有一个包含多个字段的模型,一个是使用直通表完成的,另一个是没有直通表的常规多对多关系。您仍然可以使用 save_m2m() 来保存常规的。只需将贯穿字段添加到表单上的排除列表中即可。
在表单类中添加:
class Meta:
model = YourModel
exclude = ('m2mthroughfield',)
关于Django 表单 save_m2m,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1953058/
我是一名优秀的程序员,十分优秀!