gpt4 book ai didi

Django 表单 save_m2m

转载 作者:行者123 更新时间:2023-12-02 09:37:35 24 4
gpt4 key购买 nike

嗨,我有一个模型,其中有 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com