首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django Forms save_m2m

Django Forms save_m2m
EN

Stack Overflow用户
提问于 2009-12-23 22:20:34
回答 2查看 7K关注 0票数 6

嗨,我有一个模型,其中有2多对多在它的领域。一个是标准的m2m字段,它不使用任何直通表,而另一个稍微复杂一些,有一个直通表。我使用Django forms.modelform来显示和保存表单。我必须保存表单的代码是

代码语言:javascript
运行
复制
if form.is_valid():
        f = form.save(commit=False)
        f.modified_by = request.user
        f.save()
        form.save_m2m()

当我尝试保存表单时,我得到以下错误:

无法在指定中间模型的ManyToManyField上设置值。

由于直通表的原因,我知道在执行form.save_m2m()时会发生这种情况。我想要做的是告诉Django忽略带有直通表的m2m字段,但是仍然保存没有直通表的m2m字段。然后,我可以继续手动保存直通表字段的数据。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2011-01-09 19:46:11

如果您有一个包含多个字段的模型,其中一个字段是通过直通表完成的,另一个是没有直通表的常规多对多关系。您仍然可以使用save_m2m()来保存常规文件。只需将直通字段添加到表单的排除列表中即可。

在窗体类中添加:

代码语言:javascript
运行
复制
class Meta:
    model = YourModel
    exclude = ('m2mthroughfield',)
票数 4
EN

Stack Overflow用户

发布于 2009-12-24 04:57:57

您不能保存“没有直通表”的m2m

要保存的数据存储在直通表中(且仅存储在直通表中)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1953058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档